小编zou*_*oul的帖子

无法从init系列中的方法中分配给self?

我使用自己像" self = [super init];",以下代码给我一个错误" cannot assign to self out of a method in the init family"

- (id)showDropDown:(UIButton *)b:(CGFloat *)height:(NSArray *)arr:(NSString *)direction {
    btnSender = b;
    animationDirection = direction;
    self = [super init];
    if (self) {
        // Initialization code
        CGRect btn = b.frame;
        self.list = [NSArray arrayWithArray:arr];

        if ([direction isEqualToString:@"up"]) {
            self.frame = CGRectMake(btn.origin.x, btn.origin.y, btn.size.width, 0);
            self.layer.shadowOffset = CGSizeMake(-5, -5);
        }else if ([direction isEqualToString:@"down"]) {
            self.frame = CGRectMake(btn.origin.x, btn.origin.y+btn.size.height, btn.size.width, 0);
            self.layer.shadowOffset = CGSizeMake(-5, 5);
        } …
Run Code Online (Sandbox Code Playgroud)

objective-c ios

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

如何在后台启用iPod控件来控制iOS 4中的非iPod音乐?

我想要完成的一个很好的例子是在最新版本的Spotify iPhone应用程序中实现的(Pandora似乎具有相同的功能).

当Spotify在后台时,双击可打开"多任务停靠",其中ipod控件(播放/暂停,转发等)允许控制Spotify(不是ipod应用程序)的音乐播放.此外,当iphone/ipod touch被锁定时,双击会显示类似的播放控件.

如果你不知道我的意思,这里有一篇截图的文章:http: //www.wired.com/gadgetlab/2010/07/spotify-updated-for-ios4-ready-to-replace-ipod/

在我目前的应用程序中,音乐是从服务器流式传输的(使用Matt Gallagher的AudioStreamer).我设法让音乐在后台播放.现在,我想将我的播放链接到"多任务停靠"/锁定屏幕.

我应该用[MPMusicPlayerController iPodMusicPlayer]吗?我该怎么办?

额外的问题:如果你能告诉我如何在"多任务停靠"中将ipod图标更改为我的应用程序图标(Spotify也提取了这个技巧......),这真是太棒了.

任何帮助表示感谢,谢谢.

iphone audio ipod mpmusicplayercontroller ios4

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

在Objective-C块中遇到BOOL返回类型的问题

我偶然发现了BOOL块中返回类型的奇怪问题.具有以下定义:

typedef BOOL (^BoolBlock)(void);
Run Code Online (Sandbox Code Playgroud)

...此代码通过:

BoolBlock foo = ^{ return YES; };
Run Code Online (Sandbox Code Playgroud)

...但是这无法编译:

BoolBlock bar = ^{ return YES || NO; };
Run Code Online (Sandbox Code Playgroud)

出现以下错误消息:

不兼容的块指针类型使用类型为'int(^)(void)'的表达式初始化'BoolBlock'(又名'BOOL(^)(void)')

我可以使用显式转换来解决问题,但如果没有它,这不应该工作吗?有更好的解决方案吗?

objective-c objective-c-blocks

22
推荐指数
3
解决办法
9342
查看次数

为什么加速计:didAccelerate:在IOS5中弃用?

IOS5的发布将此核心功能列为已弃用.有谁知道会取代它?我假设苹果不打算从iPhone 5中移除加速度计.

accelerometer deprecated ios5

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

CoreFoundation框架的目的是什么?

我使用NSObjects等在Objective-C Cocoa中编程了一段时间.我看到还有另一个框架:CoreFoundation.我看一下,它似乎是一个C风格的框架.

所以我有一些好奇心,我想澄清一下.我用谷歌搜索,但没有找到直接答案.

  1. CoreFoundation框架的目的是什么?
  2. Cocoa Framework不提供已经需要的所有东西吗?
  3. CoreFoundation Framework是否提供了CocoaFramework无法提供的任何优势?

这些是我的一些问题.如果有人能够提供答案,或者为我提供阅读资源的资源,那就太棒了.我想知道它是否值得更多地了解该框架.

cocoa objective-c core-foundation

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

使用NSLog记录Swift枚举

我正在尝试记录枚举:

enum CKAccountStatus : Int {
    case CouldNotDetermine
    case Available
    case Restricted
    case NoAccount
}

NSLog("%i", CKAccountStatus.Available)
Run Code Online (Sandbox Code Playgroud)

编译器抱怨:

Type 'CKAccountStatus' does not conform to protocol 'CVarArg'
Run Code Online (Sandbox Code Playgroud)

为什么?我试图抛出价值:

NSLog("%i", CKAccountStatus.Available as Int)
Run Code Online (Sandbox Code Playgroud)

但这也不会飞:

Cannot convert the expression's type '()' to type 'String'
Run Code Online (Sandbox Code Playgroud)

nslog swift

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

如何测试独立的Perl脚本?

我编写了一个小的Perl脚本,现在我想为它创建一个测试套件.我认为能够use将脚本作为模块,导入脚本中定义的subs并测试它们会很好.有没有办法让脚本既可以是独立的Perl脚本,也可以是Perl模块?(我不想将脚本拆分为单独的模块和"可执行文件",因为我打算将脚本作为单个文件分发.)

或者有更好的方法来测试脚本吗?

scripting perl unit-testing module

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

与AVAudioSessionCategoryPlayAndRecord结合使用的低录音音量

当我设置:

[[AVAudioSession sharedInstance] setCategory:
    AVAudioSessionCategoryPlayAndRecord error:NULL];
Run Code Online (Sandbox Code Playgroud)

...录制和播放工作正常,只是播放音量比我在没有录制和设置PlayAndRecord时播放相同声音时低约60%.

因为我开始录制会话,我需要获得高音量峰值(以检查用户是否在麦克风中吹气).但是没有设置AVAudio..PlayandRecord,我不能在此期间播放任何声音.这就是我实现这个命令的原因.

任何帮助?

谢克斯

audio ios avaudiosession

21
推荐指数
4
解决办法
9637
查看次数

在iOS中保存数据的选项有哪些?

我想序列化一堆数据并将其保存到文件中,然后能够(自然地)加载它并使用我编写的功能播放它.(对不起,如果我的术语没有了,我就是这样的新手了.)iOS的最佳方法是什么?从这里查看文档:

标准应用程序行为指南

我已经收集到我应该使用 NSSearchPathForDirectoriesInDomains来查找适当的存储目录根目录(Documents?),然后使用NSData存储我创建的这些数据缓冲区并将它们写入文件.我是否发现了这个或者我弄错了?还有其他的圣人建议吗?

objective-c ios

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

如何声明由可变类型支持的不可变属性?

我想声明一个公共不可变属性:

@interface Foo
@property(strong, readonly) NSSet *items;
@end
Run Code Online (Sandbox Code Playgroud)

...在实现文件中以可变类型支持:

@interface Foo (/* private interface*/)
@property(strong) NSMutableSet *items;
@end

@implementation
@synthesize items;
@end
Run Code Online (Sandbox Code Playgroud)

我想要的是实现中的可变集合,当从外部访问时,它会被转换为不可变的集合.(我并不关心调用者是否可以将实例强制转换NSMutableSet并打破封装.我住在一个安静,体面的城镇,这样的事情不会发生.)

现在我的编译器将属性视为NSSet实现内部.我知道有很多方法可以让它工作,例如使用自定义getter,但有没有办法简单地使用声明的属性?

properties objective-c

20
推荐指数
3
解决办法
3452
查看次数