linux怎么查看本机内存大小
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~