小编iPh*_*her的帖子

获取iPhone文档目录.NSSearchPathForDirectoriesInDomains仍然是唯一的方式吗?

NSSearchPathForDirectoriesInDomain S功能仍得到iPhone的文件目录的路径的最佳方式?我问,因为我在去年看到的大多数主题都是过去的日期,而且它似乎仍然是一种非常繁琐的方式来访问iPhone上常用的目录.你认为现在有一个方便的方法,类似于NSBundle的bundlePath,executablePath等.

为了清楚起见,这意味着调用"NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)"并返回索引为0的Documents路径的数组.

iphone cocoa-touch

9
推荐指数
3
解决办法
1万
查看次数

石英绘图与预烘烤图像的iPhone性能差异(我想简化为Quartz vs. Quartz)

石英的新手,我对简单的形状,渐变和阴影的绘制速度感到好奇; 特别是比较了Quartz绘图功能和iPhone上的Quartz图像绘制.

假设我需要绘制一个填充,描边和阴影的矩形.我假设将预先烘焙的rect作为PNG导入并使用drawInRect:或drawAtPoint:绘制它比使用Quartz的绘图函数绘制相同的东西更快,因为后者需要显式计算.另一方面,绘制图像我假设增加了内存使用和应用程序大小,因为我必须导入图像然后分配它.这听起来不错吗?

除此之外,这两种技术都有什么大的优点/缺点吗?作为一个非常熟悉图形程序和Quartz全新的人,我试图决定在我的代码中使用绘图函数是否有任何优势,而不是预先烘焙整个UI并导入图像.

iphone cocoa-touch core-graphics quartz-graphics

4
推荐指数
1
解决办法
2021
查看次数

代码示例:为什么我在发布NSString对象后仍然可以访问它?

我只是写了一些探索性代码来巩固我对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)

运行代码并调用此方法后,我注意到一些事情:

  1. 通常情况下,如果我尝试在达到零保留计数后访问被认为已解除分配的内容,则会出现EXC_BAD_ACCESS错误.在这里,我得到了malloc"双重免费"错误.这是为什么?

  2. 无论我添加多少行"[stringPointer release]",NSLog报告保留计数为1.当我添加更多版本时,我只会得到更多"双重免费"错误.为什么发布语句不能按预期工作?

  3. 虽然我已经过度发布了stringPointer并且我收到了一堆"双重免费"错误,但返回值仍然可以正常工作(我在主代码中有另一个报告返回值的NSLog).该程序继续正常运行.再一次,有人可以解释为什么会这样吗?

这些例子相当简单,但我试图全面掌握正在发生的事情.谢谢!

cocoa reference-counting objective-c

3
推荐指数
1
解决办法
740
查看次数

如何使用无线电接口创建UIBarButtonItems?

我有一个UIToolbar需要三个无线电样式的按钮,这意味着三个按钮,一次只能按一个按钮.该文档提到了在width属性的类引用定义中设置无线电UIBarButtonItems的可能性:

如果此属性值为正,则组合图像和标题的宽度是固定的.如果值为0.0或负值,则该项目将组合图像和标题的宽度设置为适合.如果样式使用无线电模式,则忽略此属性.默认值为0.0.

但是,我在UIKit框架参考中找到了"无线电",我找不到任何以无线电方式提到的UIBarButtonItems.我知道我可以使用TabBar作为无线电接口,但TabBar与我的UI(普通按钮+单选按钮)的用途并不完全相符.我看到日历应用程序在无线电样式(List,Day,Month)中使用UIBarButtonItems,所以看起来这应该在API中的某个地方并由HIG批准.这隐藏在某处还是我必须使用自定义视图创建UIBarButtonItems?

iphone cocoa-touch uikit uibarbuttonitem

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

如何基于typedef枚举基类行为,Apple在Objective-C中的表现方式?

一种奇怪的新手问题...我想在我的一个类中使用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等中的某些行为/变量.但作为一个新手程序员,我希望我认为的一切都是错误的.所以我有两个问题:

  1. 有人猜测Apple本身如何处理枚举类型值以改变行为?
  2. 一般来说,对于这种类型的设置,是否存在每个人都知道的最佳设计实践,或者这只是一个开放式场景?

cocoa enums cocoa-touch objective-c

0
推荐指数
1
解决办法
1894
查看次数