小编Tha*_*nks的帖子

我在哪里可以找到所有针对objective-c和cocoa的Apple指南?

我发现xcode-builtin-documentation阅读器很难使用.我希望看到所有指南的根源,以便了解在我开始之前我必须继续阅读多长时间.一直有一些新指南出现在我面前,我想知道它们有多少.

某处有概述吗?

cocoa objective-c

2
推荐指数
1
解决办法
148
查看次数

有没有人知道一个好的免费自然发声文本阅读器为mac?

有没有人知道一个好的免费自然发声文本阅读器为mac?

macos

2
推荐指数
1
解决办法
230
查看次数

iPhone内存管理的最佳解释在哪里?

我正在寻找好的解释.我有一本关于objective-c的1000页书籍,但不幸的是关于内存管理,保留计数的部分,描述得非常糟糕且难以理解.

iphone memory-management

2
推荐指数
2
解决办法
1139
查看次数

"通用"一词的最佳解释是什么?

我正在寻找一个很好的解释,也许有一些例子.根据我的理解,当它可用于多种目的时,某些东西是"通用的".但我可能错了......

java generics terminology objective-c

2
推荐指数
1
解决办法
435
查看次数

为什么我不能在iPhone SDK中访问CALayer的visibleRect属性?

我这样做有困难:

CALayer *myLayer = myUIImageView.layer; //works, no error from compiler
CGRect visRect = myLayer.visibleRect; //fat error, see below
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

错误:请求成员'visibleRect'不是结构或联合

但是文件说:

visibleRect在其自己的坐标空间中返回接收器的可见区域.(只读)@property(readonly)CGRect visibleRect

我已经包含了QuartzCore.framework,CoreGraphics.framework,UIKit.framework,Foundation.framework.

所以,如果它返回一个CGRect,为什么它不起作用?任何的想法?

iphone calayer

2
推荐指数
1
解决办法
1796
查看次数

如果我使用时间机器,为什么还要有版本控制系统?

我实际上知道最好有一个版本控制,但是我想知道Time Machine是否在懒惰程序员方面做得不好?

macos version-control

2
推荐指数
3
解决办法
725
查看次数

为什么我不必释放这些物体?

这是一个示例代码,只释放"string"对象.

NSString *nameOfFile = ... ;
NSError *error;
NSString *string = [[NSString alloc] initWithContentsOfFile:nameOfFile encoding:NSUTF8StringEncoding error:&error];
if (string == nil) {
    // handle error
}
[string release];
Run Code Online (Sandbox Code Playgroud)

我理解为什么不释放错误对象.这是因为此处的方法没有使用"new"或"alloc"方法创建该错误对象.相反,这个是通过引用返回的,因此initWithContentsOfFile方法负责该内存.但是nameOfFile对象怎么样?他们为什么不释放它?它没有被引用返回......?

iphone cocoa-touch memory-management objective-c uikit

2
推荐指数
1
解决办法
367
查看次数

如果我发送一个 - 发布的话,集合是否会向它拥有的所有对象发送--release消息?

我一直在读,如果一个集合"被释放"它也会释放它的所有对象.另一方面,我还读到,一旦集合被解除分配,集合就会释放它的对象.

但最后一件事可能并非总是如苹果所说.系统决定是否解除分配是好的.在大多数情况下,它会,但在某些情况下不会.

所以我想知道一个集合是否会导致这样的内存泄漏?当它确实发布了 - 它的所有对象发送到集合本身的-release消息时,它应该实际上 - 一旦我获得集合本身就保存集合中的所有对象.

帮助我清楚地了解这一点.谢谢!

iphone cocoa-touch memory-management uikit

2
推荐指数
1
解决办法
210
查看次数

main.m真的是这个地方,主要运行循环的自动释放池是由每个事件创建的吗?

#import <UIKit/UIKit.h>

int main(int argc, char *argv[]) {
    NSLog(@"new event...");
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
}
Run Code Online (Sandbox Code Playgroud)

如果是这种情况,则必须在每个事件上调用main()函数,对吧?但我试了一下,"新事件......"日志消息就出现在应用程序启动时.所以我猜在主线程中必须有另一个自动释放池.

iphone cocoa-touch autorelease uikit

2
推荐指数
1
解决办法
1742
查看次数

我应该在iPhone OS中排除或释放自动释放池吗?

医生说:

在垃圾收集环境中,如果需要,向池中发送排泄消息会触发垃圾回收; 然而,释放是一种无操作.在参考计数环境中,排水与释放具有相同的效果.因此,通常应使用排水而不是释放.

如果我做对了,他们说我应该总是使用-drain,无论周围有垃圾收集还是引用计数都没关系.在iPhone上没有GC,所以无论如何我发送-drain?

不幸的是,该文件只讨论了Cocoa,而不是Cocoa Touch或iPhone.所以我不确定那里是否适用.

iphone memory-management autorelease uikit

2
推荐指数
1
解决办法
2839
查看次数