小编Chr*_*son的帖子

NSInvocation for Dummies?

NSInvocation工作究竟如何?有一个很好的介绍吗?

我特别关注以下代码(来自Cocoa Programming for Mac OS X,3rd Edition)的工作原理,但是也可以独立于教程示例应用这些概念.代码:

- (void)insertObject:(Person *)p inEmployeesAtIndex:(int)index
{
    NSLog(@"adding %@ to %@", p, employees);
    // Add inverse of this operation to undo stack
    NSUndoManager *undo = [self undoManager];
    [[undo prepareWithInvocationTarget:self] removeObjectFromEmployeesAtIndex:index];
    if (![undo isUndoing])
        [undo setActionName:@"Insert Person"];

    // Finally, add person to the array
    [employees insertObject:p atIndex:index];
}

- (void)removeObjectFromEmployeesAtIndex:(int)index
{
    Person *p = [employees objectAtIndex:index];
    NSLog(@"removing %@ from %@", p, employees);
    // Add inverse of this operation to undo stack
    NSUndoManager …
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c undo-redo

138
推荐指数
3
解决办法
6万
查看次数

C内存管理

我一直听说在C中你必须真正关注你如何管理记忆.而且我还在开始学习C语言,但到目前为止,我根本不需要做任何内存管理相关活动.我总是想象必须释放变量并做各种丑陋的事情.但事实似乎并非如此.

有人可以给我(带代码示例)一个例子,说明何时需要进行"内存管理"?

c memory

86
推荐指数
5
解决办法
4万
查看次数

引用AppDelegate实例变量

我有一个基于导航应用程序模板的项目.在AppDelegate中是方法-applicationDidFinishLoading:-applicationWillTerminate:.在这些方法中,我正在加载并保存应用程序数据,并将其存储在实例变量中(它实际上是一个对象图).

当应用程序加载时,它会加载MainWindow.xib,它有一个NavigationConroller,后者又有一个RootViewController.RootViewController nibName属性指向RootView(我的实际控制器类).

在我的课堂上,我希望引用我在-applicationDidFinishLoading:方法中创建的对象,以便我可以获得它的引用.

谁能告诉我怎么做?我知道如何在我以编程方式创建的对象之间进行引用,但考虑到中间步骤是在NIB文件中完成的,我似乎无法解决问题.

iphone cocoa-touch

84
推荐指数
3
解决办法
6万
查看次数

从UIColor中提取rgb

之前看到这个问过,但我的例子似乎没有用.

const CGFloat *toCol = CGColorGetComponents([[UIColor greenColor] CGColor]);
Run Code Online (Sandbox Code Playgroud)

使用GDB查看数组是空的.任何提示?

iphone core-graphics cgcolor uicolor

80
推荐指数
5
解决办法
6万
查看次数

将音频转换为CAF格式,以便使用OpenAL在iPhone上播放

我在CrashLanding示例中使用Apple的SoundEngine示例代码来播放多个音频文件.使用CrashLanding附带的示例caf文件一切正常但是当我尝试使用我自己的样本使用afconvert转换为CAF时,我得到的是一个沉默的石头;)

有没有人有afconvert设置会生成一个能够通过OpenAL播放的CAF文件?

iphone openal core-audio afconvert

71
推荐指数
3
解决办法
6万
查看次数

CALayer的动画结束回调?

我想知道CALayer中动画的回调位置(或者有什么内容).具体来说,对于隐含的动画,如改变框架,位置等.在UIView中,你可以这样做:

[UIView beginAnimations:@"SlideOut" context:nil];
[UIView setAnimationDuration:.3];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animateOut:finished:context:)];
CGRect frame = self.frame;
frame.origin.y = 480;
self.frame = frame;
[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)

具体来说,这setAnimationDidStopSelector就是我想要的CALayer中的动画.有什么相似的吗?

TIA.

iphone core-animation

66
推荐指数
8
解决办法
5万
查看次数

iPhone正确使用Application Delegate

我希望能够通过我的应用程序中的任何位置引用某些状态/对象.例如,用户登录到他们的应用程序,我需要调用Web服务并检索用户信息.然后,我希望能够从应用程序的任何位置访问此信息,如下所示:

myAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
user = delegate.u;
Run Code Online (Sandbox Code Playgroud)

是否在应用程序委托中将实例变量设置为User对象,并在需要时从那里引用它是一种糟糕的方式来实现它?我通常根据用户的登录设置它.

想听听专业人士如何处理这个.

iphone cocoa-touch objective-c

58
推荐指数
3
解决办法
5万
查看次数

我应该使用哪个-awakeFromNib或-viewDidLoad?

我最近在我的应用程序中遇到了一个问题,我在UIViewController子类的-awakeFromNib方法中创建的一些子视图正 从视图中消失.经过一番探索之后,我发现移动我输入的代码-awakeFromNib-viewDidLoad解决问题.-awakeFromNib当UIViewController从nib中取消归档时,似乎只调用一次,并且-viewDidLoad每次取消归档视图时都会调用它.

那么最佳做法是什么?看起来UIViewController -awakeFromNib不应该向视图添加任何视图,应该完成那种东西-viewDidLoad.我理解正确吗?还是我比我想的更困惑?

cocoa-touch

54
推荐指数
4
解决办法
5万
查看次数

在iOS应用程序中保留Cookie?

我将NSHTTPCookieStorage在iOS应用程序中使用来管理从URL检索到的cookie,我知道它将在应用程序的运行时管理cookie.但是,我想知道在应用程序关闭后是否可以保留cookie.然后在再次打开应用程序时再次阅读这些cookie.是否NSHTTPCookieStorage在应用程序之间保留cookie?或者只是在应用程序运行时?我需要用来CoreData坚持这些饼干吗?`

cocoa-touch ios

53
推荐指数
2
解决办法
4万
查看次数

Xcode 4:从命令行运行测试(xcodebuild)?

我在Xcode 4中创建了一个全新的iOS项目,并包含了单元测试.默认应用程序有2个目标,主应用程序和单元测试包.使用"产品>测试"(Command-U)构建应用程序,构建单元测试包,启动iOS模拟器并运行测试.现在,我希望能够从命令行执行相同的操作.命令行工具(xcodebuild)没有"测试"操作,但似乎我应该能够直接构建单元测试包目标,因为它取决于应用程序本身.但是,运行:

xcodebuild -target TestAppTests -sdk iphonesimulator4.3 -configuration Debug build
Run Code Online (Sandbox Code Playgroud)

给出以下消息:

/Developer/Platforms/iPhoneSimulator.platform/Developer/Tools/Tools/RunPlatformUnitTests:95: warning: Skipping tests; the iPhoneSimulator platform does not currently support application-hosted tests (TEST_HOST set).
Run Code Online (Sandbox Code Playgroud)

这似乎是一个谎言,因为当我从GUI运行Command-U时,为我的单元测试包目标设置了测试主机.我之前看过有关逻辑测试和应用程序测试之间分离的帖子,但似乎Xcode 4消除了这种区别.我是如何从命令行运行测试的?

xcode unit-testing xcodebuild ocunit xcode4

47
推荐指数
4
解决办法
3万
查看次数