我需要弄清楚 Objective-C 内存管理:
如果我在类头中将一个对象声明为没有@property 的 ivar:
@interface MyFacebooDelegate : UIViewController
{
TableViewController *tableController;
}
...
@end
以及代码中的一些地方,例如- (void)viewDidLoad
我做的:
tableController = [[TableViewController alloc] init];
所以最好的方法是在哪里释放它。如果我将即时对象设为属性,会有什么不同?以及内存管理将如何
@interface MyFacebooDelegate : UIViewController
{
TableViewController *tableController;
}
...
@end
@property (nonatomic, strong) TableViewController *tableController;
以下语法对对象 viewController 的作用:
。H
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) ViewController *viewController;
@end
.m
@implementation AppDelegate
@synthesize window = _window;
@synthesize viewController = _viewController;
- (void)dealloc
{
[_window release];
[_viewController release];
[super dealloc];
}
.....
@end
如果我想通过一个方法将一个对象返回给另一个类,我是否需要先autorelease
在方法体中,然后retain
在接收方?例如,这个方法在方法体和接收方到底要做什么:
-(NSString *)getFriendId
{
NSArray *ar = [NSArray arrayWithObjects:@"1",@"2",@"3", nil];
return [ar objectAtIndex:0];
}
我知道很多,但我真的很困惑,需要你的帮助。