oc51--循环retain
生活随笔
收集整理的這篇文章主要介紹了
oc51--循环retain
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
// main.m
// 循環(huán)retain#import <Foundation/Foundation.h>
#import "Person.h"
#import "Dog.h"int main(int argc, const char * argv[]) {Person *p = [Person new];Dog *d = [Dog new];// 如果A對用要擁有B對象, 而B對應又要擁有A對象, 此時會形成循環(huán)retain// 如何解決這個問題: 不要讓A retain B, B retain A// 讓其中一方不要做retain操作即可p.dog = d; // retaind.owner = p; // retain assign
[p release];[d release];return 0;
} // Dog.h#import <Foundation/Foundation.h>
@class Person;@interface Dog : NSObject//@property(nonatomic, retain)Person *owner;
@property(nonatomic, assign)Person *owner;
@end // Dog.m#import "Dog.h"
#import "Person.h"@implementation Dog-(void)dealloc
{NSLog(@"%s", __func__);
// [_owner release];
// self.owner = nil;
[super dealloc];
}
@end //
// Person.h#import <Foundation/Foundation.h>
@class Dog;@interface Person : NSObject@property(nonatomic, retain)Dog *dog;
@end // Person.m#import "Person.h"
#import "Dog.h"@implementation Person- (void)dealloc
{NSLog(@"%s", __func__);
// [_dog release];self.dog = nil;[super dealloc];
}
@end
?
轉載于:https://www.cnblogs.com/yaowen/p/7428389.html
總結
以上是生活随笔為你收集整理的oc51--循环retain的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 进阶攻略|前端最全的框架总结
- 下一篇: 项目实施工程师的工作