小编gro*_*hog的帖子

声明属性的点表示法与消息表示法

我们现在有属性的"点"符号.我见过各种的Forth约点符号主场迎战消息表示法的优点.为了保持反应不受重视,我不会在问题中以任何方式回应.

您对点符号与财产访问的消息符号有何看法?

请尽量将它集中在Objective-C上 - 我提出的一个偏见是Objective-C是Objective-C,所以你喜欢它就像Java或JavaScript一样无效.

有效的评论与技术问题(操作顺序,演员优先,表演等),清晰度(结构与对象性质,赞成和反对!),简洁等有关.

请注意,我是一个严格的质量和可读性的学校,在代码约定和质量至关重要的大型项目上工作(写入曾经读过一千次范例).

syntax coding-style objective-c

81
推荐指数
7
解决办法
1万
查看次数

NSError域/自定义域 - 约定和最佳实践

NSError需要一个域,我理解它可以分割错误代码的范围.

人们会预料到某个地方存在domain.error代码的注册表,但我无法发现它.

据说这可以用于查找错误的本地化描述.

有没有人有任何已知的最佳实践来处理错误域和代码?权威参考(主要开发人员或框架制造商)是最佳的,但即使是详细描述良好惯例的博客也是有用的.

在您的项目中,您是否维护错误域/代码的注册表,这些注册表映射到基于域/代码的错误对象的本地化描述,恢复,众所周知的userinfo密钥或类似工厂?

或者你通常只是拼凑一些域和一些代码,并依赖于众所周知的用户信息密钥,如NSLocalizedDescriptionKey等,在你的定制NSError域?

cocoa cocoa-touch objective-c nserror

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

正确使用Objective C的方法

这不是一个风格问题.它更多的是正确使用语言本身.我对编程很新,而且我对Objective-C和Cocoa完全不熟悉,但在阅读了该语言并查看了一些示例代码后,一些使用模式继续弹出,对我来说没有意义.或者说,在我看来,它们似乎并不是最优的.我希望你们都能帮助教育我正确使用其中一些语言结构.

接口与协议

我理解与抽象相关的接口和实现的概念.然而,我在Objective-C示例代码中看到的主导模式如下......

@interface Foo : NSObject
{
  some ivars decls
}
some methods decls
@end
Run Code Online (Sandbox Code Playgroud)

Foo* f = [[Foo alloc] init];
Run Code Online (Sandbox Code Playgroud)

@protocol Foo <NSObject>
  some methods
  maybe some properties
@end

@interface FooProvider : NSObject
  + (FooProvider*) sharedProvider;
  - (id<Foo>) fooWithBlahBlah;
@end
Run Code Online (Sandbox Code Playgroud)

id<Foo> f = [[FooProvider sharedProvider] fooWithBlahBlah];
[f whatever];
Run Code Online (Sandbox Code Playgroud)

@interface Foo : NSObject
{
  some ivars decls
}
some methods decls
@end
Run Code Online (Sandbox Code Playgroud)

Foo* f = [[Foo alloc] init];
Run Code Online (Sandbox Code Playgroud)

@protocol Foo <NSObject>
  some methods
  maybe some properties
@end

@interface FooProvider …
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c

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

使用TouchesMoved跟踪两个手指

假设我有两个手指触摸iPhone的屏幕,但只有一个正在移动.

TouchesMoved只显示一个手指(事件).

我如何知道TouchesMoved的两个手指中的哪一个?

iphone cocoa-touch multi-touch iphone-sdk-3.0

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

未来的硬件iPhone屏幕分辨率会发生变化

在我开发应用程序的过程中,我一直关注的是图像和视图组件的硬编码几何图形,它们理所当然地认为当前显示器代的320x480性质.

我在StackOverflow和示例/教程中看到了很多答案,它们在屏幕尺寸上进行了硬编码.我已经为尺寸为320x480的背景制作了一些纹理,但我们小心翼翼地将它们设为UIViewContentModeScaleToFill,但我并不完全肯定IB中的像素定位会导致硬件特定的接口.

在某些时候,我想(并希望!)iPhone将具有不同的显示分辨率.

  • 你是开发商计划的吗?

  • 您将来如何处理可变屏幕分辨率?

(当然假设有人想要超过640kb,哦对不起,320x480分辨率:))

请参阅此URL:http: //developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/SupportingResolutionIndependence/SupportingResolutionIndependence.html#//apple_ref/doc/uid/TP40007072-CH10

对于Apple4的iOS4答案.

iphone cocoa-touch interface-builder

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

如何确定UINavigationControllers中的先前visibleViewController?

我正在导航视图层次结构的上下文中切换视图,并且我希望能够在切换时确定在新视图下推送的先前视图是什么.

我在UINavigationControllerDelegate中尝试这个:

(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    NSLog( @"Switching from %@ to %@", 
        NSStringFromClass( [[navigationController visibleViewController] class] ),
        NSStringFromClass( [viewController class] )
    );
}
Run Code Online (Sandbox Code Playgroud)

我明白了:

2009-08-05 20:05:21.274 App Name [85913:20b]从ManagementScreen切换到ManagementScreen

不幸的是,似乎在调用"will"之前,它已经在UINavigationController的状态中被换出,这样传入的viewController总是与UINavigationController上的visibleViewController相同(以及topViewController属性,这里没有演示,但我试过了它用相同的代码).

我想避免扩展导航视图控制器,老实说,虽然我可以轻松地在委托上放置一个属性 - 但是我想知道在现有框架内是否可以实现这种行为(似乎应该在它发生之前调用发生在之后,但似乎导航控制器的状态在之前被修改过).

谢谢!

iphone cocoa-touch objective-c

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

iPhone SenTestingKit无法在UnitTestBundle目标中找到AppDelegate

我正在尝试使用XCode 3.2.3为iPhone应用程序设置单元测试.

我按照http://developer.apple.com/iphone/library/documentation/xcode/conceptual/iphone_development/135-Unit_Testing_Applications/unit_testing_applications.html中的步骤进行操作.

尽我所能,但我在尝试构建时收到此错误消息:"((yourApplicationDelegate)!= nil)"应该是真的.UIApplication未能找到AppDelegate

(这是USE APPLICATION UNIT TEST的默认琐碎测试是真的)

我正在构建我的应用测试目标,如文档中所述,并得到此错误.

我是否需要确保我的所有非测试用例源都在我的测试包中?

困惑

-

我将源文件包含到我的项目中并且编译得很好,但它仍然遇到相同的单元测试错误:

"((yourApplicationDelegate)!= nil)"应该是真的.UIApplication未能找到AppDelegate

原始代码与模板代码相同:

-(void) testAppDelegate {

    id yourApplicationDelegate = [[UIApplication sharedApplication] delegate];
    STAssertNotNil(yourApplicationDelegate, @"UIApplication failed to find the AppDelegate");
}
Run Code Online (Sandbox Code Playgroud)

iphone xcode unit-testing

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

iPhone NSTimeZone:localTimeZone混乱

从我的理解,呼唤

NSLog(@"Local Time Zone %@",[[NSTimeZone localTimeZone] name]);
Run Code Online (Sandbox Code Playgroud)

为您提供设备的本地时区.它给我的是"US/Central",我在[NSTimeZone abbreviationDictionary]的缩写列表中找不到任何地方,或者[NSTimeZone knownTimeZoneNames]中的时区名称列表.这个来自哪里?我需要将当前设备时区传递给Rails应用程序,它理解"澳大利亚/悉尼""美国/芝加哥"之类的内容,但不了解"US/Central".

我如何获取localTimeZone给我的内容并将其转换为Rails可以理解的字符串(即knownTimeZoneNames中的任何时区,它应该是系统知道的所有时区名称?)

iphone ruby-on-rails objective-c nstimezone

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

CG/NSPoint类整数元组类型?

Apple基础套件中是否提供了适当的结构来表示离散坐标系?我知道我可以只使用NSPoint的积分组件,按惯例保持它离散,甚至可以定义我自己的组件.

但是,如果已经有一个正确输入的我会更喜欢并避免隐式/显式类型的肮脏.

iphone cocoa objective-c

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