是NSSearchPathForDirectoriesInDomain S功能仍得到iPhone的文件目录的路径的最佳方式?我问,因为我在去年看到的大多数主题都是过去的日期,而且它似乎仍然是一种非常繁琐的方式来访问iPhone上常用的目录.你认为现在有一个方便的方法,类似于NSBundle的bundlePath,executablePath等.
为了清楚起见,这意味着调用"NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)"并返回索引为0的Documents路径的数组.
石英的新手,我对简单的形状,渐变和阴影的绘制速度感到好奇; 特别是比较了Quartz绘图功能和iPhone上的Quartz图像绘制.
假设我需要绘制一个填充,描边和阴影的矩形.我假设将预先烘焙的rect作为PNG导入并使用drawInRect:或drawAtPoint:绘制它比使用Quartz的绘图函数绘制相同的东西更快,因为后者需要显式计算.另一方面,绘制图像我假设增加了内存使用和应用程序大小,因为我必须导入图像然后分配它.这听起来不错吗?
除此之外,这两种技术都有什么大的优点/缺点吗?作为一个非常熟悉图形程序和Quartz全新的人,我试图决定在我的代码中使用绘图函数是否有任何优势,而不是预先烘焙整个UI并导入图像.
我只是写了一些探索性代码来巩固我对Objective-C的理解,我遇到了这个我不太了解的例子.我定义了这个方法并运行代码:
- (NSString *)stringMethod
{
NSString *stringPointer = [[NSString alloc] initWithFormat:@"string inside stringPointer"];
[stringPointer release];
[stringPointer release];
NSLog(@"retain count of stringPointer is %i", [stringPointer retainCount]);
return stringPointer;
}
Run Code Online (Sandbox Code Playgroud)
运行代码并调用此方法后,我注意到一些事情:
通常情况下,如果我尝试在达到零保留计数后访问被认为已解除分配的内容,则会出现EXC_BAD_ACCESS错误.在这里,我得到了malloc"双重免费"错误.这是为什么?
无论我添加多少行"[stringPointer release]",NSLog报告保留计数为1.当我添加更多版本时,我只会得到更多"双重免费"错误.为什么发布语句不能按预期工作?
虽然我已经过度发布了stringPointer并且我收到了一堆"双重免费"错误,但返回值仍然可以正常工作(我在主代码中有另一个报告返回值的NSLog).该程序继续正常运行.再一次,有人可以解释为什么会这样吗?
这些例子相当简单,但我试图全面掌握正在发生的事情.谢谢!
我有一个UIToolbar需要三个无线电样式的按钮,这意味着三个按钮,一次只能按一个按钮.该文档提到了在width属性的类引用定义中设置无线电UIBarButtonItems的可能性:
如果此属性值为正,则组合图像和标题的宽度是固定的.如果值为0.0或负值,则该项目将组合图像和标题的宽度设置为适合.如果样式使用无线电模式,则忽略此属性.默认值为0.0.
但是,我在UIKit框架参考中找到了"无线电",我找不到任何以无线电方式提到的UIBarButtonItems.我知道我可以使用TabBar作为无线电接口,但TabBar与我的UI(普通按钮+单选按钮)的用途并不完全相符.我看到日历应用程序在无线电样式(List,Day,Month)中使用UIBarButtonItems,所以看起来这应该在API中的某个地方并由HIG批准.这隐藏在某处还是我必须使用自定义视图创建UIBarButtonItems?
一种奇怪的新手问题...我想在我的一个类中使用typedef枚举声明.这个特定的类被其他类使用,其中客户端类可能会说"将样式设置为Style1(枚举类型)".然后目标类的行为将相应地改变.这类似于在iPhone SDK中使用UITableViewCellStyles的方式.
因此,我阅读了一些UIKit框架标题,以便更好地了解Apple如何处理枚举类型.我看到他们到处宣布了一堆枚举,就像这样......
typedef enum {
UIBarButtonSystemItemDone,
UIBarButtonSystemItemCancel,
UIBarButtonSystemItemEdit,
UIBarButtonSystemItemSave,
UIBarButtonSystemItemAdd,
...
UIBarButtonSystemItemUndo, // available in iPhone 3.0
UIBarButtonSystemItemRedo, // available in iPhone 3.0
} UIBarButtonSystemItem;
Run Code Online (Sandbox Code Playgroud)
...但我没有在标题中看到关于它们如何实际处理这些类型的任何线索(我基本上试图查看它们的实现示例,所以这不是一个惊喜).我本能的想法是一个相当新的程序员将匹配每种类型的int值与存储在数组,plist等中的某些行为/变量.但作为一个新手程序员,我希望我认为的一切都是错误的.所以我有两个问题: