Objective-C入门(Learning Objective-C)

网友投稿 280 2022-09-02

Objective-C入门(Learning Objective-C)

Objective-C是C语言的一个超集,也就是说,它支持基本的C语言的语法。类的定义和实现是分别放在头文件和源文件中的。头文件的扩展名是.h;源文件是.m;还有一种.mm是用来放C++代码的。

Classes(类)

代码实现部分包含类方法的代码,这部分放在.m文件中。

类MyClass继承了基类NSObject。

类的实例变量(或者叫成员变量)放在大括号中({ & });

每行语句是以分号(;)来结尾的。

Methods and Messaging(方法与消息)

Methods:

Message:叫这个message我总觉得怪怪的,怎么翻译都觉得别扭。算了,不纠结了,直接说吧。调用一个方法的方式,就是发对象消息(messaging an object)。message就是方法签名。所有发送给对象的message都是动态调用的,这也是objective-c实现多态的方法。

[myArray insertObject:anObject atIndex:0];

由上面的示例可以看到,一次调用,一个message是用一堆中括号([ & ])来包起来的。在中括号内,接收message的对象在左边( myArray ),message在右边( 也就是insterObject:anObject atIndex:0 )。

message也可以嵌套,比如参数可以是一个message,比如,message执行的结果可以传给参数,或把message作为接收方,就行下面这行代码一样,这样代码也会比较简洁。

[[myAppObject theArray] insertObject:[myAppObject objectToInsert] atIndex:0];

Objective-C用“.”操作符来操作访问方法( accessor methods ),用来获取或设置对象状态。访问方法的形式一般来说就是 :-(type) prropertyName //读取-(void) setPropertyName:(type) //设置下面是示例代码:

//在消息中用“.”操作符调用访问方法[myAppObject.theArray insertObject:[myAppObject objectToInsert] atIndex:0]; //赋值时的"."操作符调用访问方法 myAppObject.theArray = aNewArray;

类方法的实现示例:

@implementation MyClass - (id)initWithString:(NSString *)aName { self = [super init]; if (self) { name = [aName copy]; } return self; } + (MyClass *)createMyClassWithString: (NSString *)aName { return [[[self alloc] initWithString:aName] autorelease]; } @end

note:在objective-C中 nil 相当于 null。比如:NSMutableArray *myArray = nill。

Declared Properties(属性)

@property BOOL flag;@property (copy) NSString *nameObject; // Copy the object during assignment. @property (readonly) UIView *rootView; // Declare only a getter method.

每一个可读的属性,会自动设定一个同名的方法,用来读取;

@synthesize flag;@synthesize nameObject; @synthesize rootView;

@synthesize flag, nameObject, rootView;

strings(字符串)

作为C的超集,它支持C风格的字符串。但一般来说不会用C风格的字符串。字符串会作为类NSStrings的对象来传送。用类NSStrings来包装字符串有很多好处,比如可以使用一些内建的方法来处理字符串,比如按长度排序,支持unicode,以及printf风格的格式化等等。因为字符串经常被用到,所以,objective-c提供了一种简写方式来建立NSString对象。如下所示(用@):

NSString *myString = @"My String\n";NSString *anotherString = [NSString stringWithFormat:@"%d %@", 1, @"String"]; // Create an Objective-C string from a C string NSString *fromCString = [NSString stringWithCString:"A C string" encoding:NSASCIIStringEncoding];

protocols(协议)

protocols按我的理解应该跟C#里的接口差不多意思:

@interface MyClass : NSObject {} @end

通过下面的代码理解一下协议,委托及其他对象直接的关系:

@protocol MyProtocol- (void)myProtocolMethod; @end

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:成为高效Web开发者必备素质
下一篇:营销有用吗?(速卖通联盟营销有用吗)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~