VinceYuan

Personal Blog
posts - 17, comments - 64, trackbacks - 0, articles - 0

最新评论

共4页: 1 2 3 4 下一页 
@非常混混 直接dealloc是没用的因为他的引用计数还是为1,程序发现为1就释放不了
初来乍到。
楼主,你的文章写的很不错,受益匪浅,由于刚接触objective-c,现有一问题,请指教: void funcNoAutorelease() { ClassB *objB1 = [[ClassB alloc]init]; ClassA *objA = [[ClassA alloc]init]; objA.objB = objB1; [objB1 release]; [objA release]; } void funcAutorelease() { ClassB *objB1 = [[[ClassB alloc]init] autorelease]; ClassA *objA = [[[ClassA alloc]init] autorelease]; objA.objB = objB1; } 上面的代码中objA.objB,都不需要retain吗?
讨论一下,lz你文章中的2.3 Release一个对象后,立即把指针清空。 这个建议在这种情况下就会导致对象被release 2次。 @property (retain) ClassB* objB; [self.objB release]; self.objB = nil; 而如果变成这样: @property (retain) ClassB* objB; [self.objB release]; objB = nil; objB就只会被release 1次。 这其中的微妙之处,可能还是和读者们说一下会好一点哦。 仅是技术谈,切莫见怪~
不错不错,我转了
不要手动调用dealloc。应该用release。我文中用dealloc只是为了介绍为什么obj-c需要引入release。
我是在一个controller里面viewDidLoad下写的: ClassA *classA = [[ClassA alloc] init]; [classA dealloc]; [classA sayHello]; 为何连这样都是可以的?
我按照文章,如此做的: ClassA *classA = [[ClassA alloc] init]; ClassA *classB = classA; [classA sayHello]; [classA dealloc]; [classB sayHello]; [classB dealloc]; 能够执行倒数第二行和下一行吗? 结果呢: 2012-02-20 18:00:32.342 NewTest[6542:207] Hello! 2012-02-20 18:00:32.344 NewTest[6542:207] Hello! NewTest(6542,0xa009c540) malloc: *** error for object 0xab00230: pointer being freed was not allocated *** set a breakpoint in malloc_error_break to debug 真的可以啊,只有到最后移行才报错,为何?
@青怪 你的dealloc里的实现呢
即使我注释了[mazda retain];也能输出;
关于第2点,我今天中午写了一个类似的,但输出了,我认为第2个指针retain+1了一次,因为没到0,就没释放,所以输出,看来我错了。我再次测试了一下,真的两次都可以输出。 @interface Car : NSObject { NSString *_name; int price; } @property(assign,readwrite) int price; -(void) printPrice; @end @implementation Car @synthesize price; -(void)printPrice{ NSLog(@"car price is %i yuan!hahah~",price); } @end int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; Car *bmw=[[Car alloc] init];//retain=1(retain自动计数) Car *mazda=bmw; [mazda retain];//非init,new,copy需手动retain计数 [bmw setPrice:1000]; [bmw printPrice]; [bmw dealloc];//谁创建,谁释放 bmw=nil;//销毁指针 [mazda printPrice]; [mazda dealloc];//谁创建,谁释放 mazda=nil;//销毁指针 [pool drain]; return 0; } 输出: 2011-09-16 23:59:36.455 zhizhen[2817:903] car price is 1000 yuan!hahah~ 2011-09-16 23:59:36.457 zhizhen[2817:903] car price is 1000 yuan!hahah~ sharedlibrary apply-load-rules all 不知道错在哪里了
奇怪了,我可以输出啊
关于属性的初始化,小弟一直有个问题,请教下大哥: 一个属性 aProperty = [[AProperty alloc] init]; // 初始化方式1 和 AProperty tempProperty = [AProperty alloc] init]; aProperty = tempProperty; [tempProperty release]; // 初始化方式2 两种方式有何区别,谢谢~!!
真是好文! 深入浅出!通俗易懂!
试用了一下,感觉并不是我想象的那种。 按了快捷键后,发现任务栏只是变成超级透明的感觉,鼠标拉下虚线会发现下面根本过不到最底部。 有一个透明的任务栏在哪里挡住了! 像要那种不占空间的那种 快捷键 绝对隐藏 不会留下透明墙挡住的那种。 我找了好多好多这种软件,都是把任务栏弄透明而已。很纠结!期待作者新创意!
学习了就得顶
共4页: 1 2 3 4 下一页