程序的执行
1,从终端执行代码。
-fobj 意思是编译OC语言。
-arc 使用自动引用计数。
-framework 链接到Foundation框架。
-o 指定执行文件,文件会被创建。
clang -fobjc-arc -framework Foundation main.m -o mappp
别忘了加arc。
编译的main.m代码。
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]){
@autoreleasepool {
NSString *helloString = @"Hello World";
NSLog(@"%@", helloString);
}
return 0;
}
2,控制台打印,
NSLog();注意类型。
3,创建一个自定义类,比如Car.h
#import <Foundation/Foundation.h>
@interface Car : NSObject
@end
Car.m
#import “Car.h"
@implementation Car
@end
用的时候
Car *car = [[Car alloc] init];
4,在类中定义属性。
#import <Foundation/Foundation.h>
@interface Car : NSObject{
@private
NSString *name_;
}
@property(strong) NSString *name;
@end
readwrite 读写属性,需要getter和setter属性。
readonly 只读属性,只需要getter。
strong 强指针,保留内存。
weak 弱引用,当对象为nil时,内存释放。
assign 简单赋值,不更改索引计数。
nonatomic 非原子性访问,对属性赋值的时候不加锁,多线程并发访问会提高性能。
copy 建立一个索引计数为1的对象,然后释放旧对象对NSString
retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1
5,@synthesize
比如你的Car.h
#import <Foundation/Foundation.h>
@interface Car : NSObject
@property(strong) NSString *name;
@end
Car.m
#import "Car.h"
@implementation Car
@synthesize name;
@end
你可以使用.或发送方法获取name值。
car.name = @"Sports Car";
NSLog(@"car is %@", car.name);
你甚至可以设置name值,具体示例。
代码示例。
Car *car = [[Car alloc] init];
car.name = @"Sports Car";
NSLog(@"car.name is %@", car.name);
[car setName:@"New Car Name"];
NSLog(@"car.name is %@", [car name]);
6,添加类方法。
+(void)writeDescriptionToLogWithThisDate:(NSDate *)date;
调用类方法....全是基础我就不细写了。
[Car writeDescriptionToLogWithThisDate:[NSDate date]];
类方法不用实例话
7,实例方法。 太基础,不细写了。
-(void)writeOutThisCarsState{
NSLog(@"This car is a %@", self.name);
}
Car *newCar = [[Car alloc] init];
newCar.name = @"My New Car";
[newCar writeOutThisCarsState];
8,扩展类
Listing 1-13. HTMLTags.h
#import <Foundation/Foundation.h>
@interface NSString (HTMLTags)
-(NSString *) encloseWithParagraphTags;
@end
Listing 1-14. HTMLTags.m #import "HTMLTags.h"
@implementation NSString (HTMLTags)
-(NSString *) encloseWithParagraphTags{
return [NSString stringWithFormat:@"<p>%@</p>",self];
}@end
Listing 1-15. main.m
#import "HTMLTags.h"
int main (int argc, const char * argv[]){
@autoreleasepool {
NSString *webText = @"This is the first line of my blog post";
//Print out the string like normal:
NSLog(@"%@", webText);
//Print out the string using the category function:
NSLog(@"%@", [webText encloseWithParagraphTags]);
}
return 0; }
注意下@interface NSString,然后用的时候[webText encloseWithParagraphTags],就是说给NSString添加了一个自己的方法。