天天看点

Objective-C语法小总结1,方法调用2.访问器3.创建对象4.内存管理5.类接口6.类实现7.日志记录: NSLog()8.属性(Property)9.类目(Category)

1,方法调用

    (1)调用对象的方法:

output = [object methodWithOutput]; 
output = [object methodWithInputAndOutput:input];
           

    (2)调用类的方法:(创建对象)

id myObject = [NSString string]; 
           

NSString* myString = [NSString string]; 
           

    (3)嵌套调用:

[NSString stringWithFormat:[prefs format]];
           

    (4)多输入参数:

声明:

-(BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile; 
           

调用:

BOOL result = [myData writeToFile:@"/tmp/log.txt" atomically:NO];
           

2.访问器

    (1)setter

[photo setCation:@”Day at the Beach”];
output = [photo caption];
           

    (2)点操作符

photo.caption = @”Day at the Beach”; 
output = photo.caption; 
           

3.创建对象

    (1)创建自动释放的对象

NSString* myString = [NSString string];
           

    (2)手工alloc创建

NSString* myString = [[NSString alloc] init]; 
           

    注:[NSString alloc] 是NSString类本身的alloc方法调用。这是一个相对低层的调用,它的作用是分配内存及实例化一个对象。

            [[NSString alloc] init] 调用新创建对象的init方法。init方法通常做对象的初始化设置工作,比如创建实例变量。

4.内存管理

//string1 将被自动释放 
NSString* string1 = [NSString string]; 
 
//必须在用完后手工释放 
NSString* string2 = [[NSString alloc] init]; 
[string2 release]; 
           

5.类接口

Photo.h

#import <Cocoa/Cocoa.h> 
 
@interface Photo : NSObject { 
   NSString* caption; 
   NSString* photographer; 
} 
 
- (NSString*)caption; 
- (NSString*)photographer; 
 
- (void) setCaption: (NSString*)input; 
- (void) setPhotographer: (NSString*)input; 
           

6.类实现

Photo.m

#import "Photo.h" 
 
@implementation Photo 
 
- (NSString*) caption { 
    return caption; 
} 
 
- (NSString*) photographer { 
    return photographer; 
} 
 
- (void) setCaption: (NSString*)input 
{ 
    [caption autorelease]; 
    caption = [input retain]; 
} 
 
- (void) setPhotographer: (NSString*)input 
{ 
    [photographer autorelease]; 
    photographer = [input retain]; 
} 
- (void) dealloc 
{ 
    [caption release]; 
    [photographer release]; 
    [super dealloc]; 
}
@end
           

7.日志记录: NSLog()

NSLog ( @"The current date and time is: %@", [NSDate date] );
           

8.属性(Property)

用属性改写后的接口:

#import <Cocoa/Cocoa.h> 
 
@interface Photo : NSObject { 
    NSString* caption; 
    NSString* photographer; 
} 
@property (retain) NSString* caption; 
@property (retain) NSString* photographer; 
 
@end 
           

改写后的实现部分:

#import "Photo.h" 
         
@implementation Photo 
 
@synthesize caption; 
@synthesize photographer; 
 
- (void) dealloc 
{ 
    self.caption = nil; 
    self.photographer = nil;
    [super dealloc]; 
} 
 
@end
           

9.类目(Category)

声明:

#import <Cocoa/Cocoa.h> 
             
@interface NSString (Utilities) 
- (BOOL) isURL; 
@end 
           

实现:

#import "NSString-Utilities.h" 
             
@implementation NSString (Utilities) 
 
- (BOOL) isURL 
{ 
    if ( [self hasPrefix:@"http://"] ) 
        return YES; 
    else 
        return NO; 
} 
 
@end