小编Han*_*ang的帖子

为"无法识别的选择器"异常设置默认处理程序

在Objective-C中,有没有办法设置默认的处理程序以避免unrecognizedselector异常?我想做NSNULLNSNumber响应所有的方法NSString.

谢谢!

cocoa objective-c nsstring unrecognized-selector

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

避免AVPlayer和UIWebView同时播放音乐

感谢您注意到这个问题.我正在使用单身人士在我的应用中播放音乐,通过AVPlayer这样的方式:

AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback error:nil];
[session setActive:YES error:nil];

AVURLAsset *musicAsset    = [[AVURLAsset alloc] initWithURL:url options:nil];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:musicAsset];

AVPlayer *player = [AVPlayer playerWithPlayerItem:_playerItem];

player.actionAtItemEnd = AVPlayerActionAtItemEndNone;

[player play];  
Run Code Online (Sandbox Code Playgroud)

它工作正常.但我的应用程序有一些音乐页面(HTML5),因此用户也可以访问网页,并在那里播放音乐.来自UIWebView和来自的音乐AVPlayer可以在同一时间播放,似乎很奇怪.有没有办法检测是否UIWebView会播放音乐,所以我可以阻止原生音乐AVPlayer?谢谢!

avfoundation ios avplayer

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

在UITextView中检测自动换行

我通过扩展UITextView来实现自定义的富文本编辑器.当用户选择文本范围并使用"突出显示"菜单时,编辑器将为所选文本绘制蓝色背景:

- (CGRect)getRectAtRangePos:(NSInteger)pos {
    UITextPosition *beginning = self.beginningOfDocument;
    UITextPosition *start = [self positionFromPosition:beginning offset:pos];
    CGRect rect = [self caretRectForPosition:start];
    return [self convertRect:rect fromView:self.textInputView];
}


- (void)drawRange:(NSRange)range {
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetRGBFillColor(context, 0x16/255.f, 0x38/255.f, 0xfc/255.f, 0.5);
    CGRect startRect = [self getRectAtRangePos:range.location];
    CGRect endRect = [self getRectAtRangePos:range.location + range.length];

    CGFloat padding = 1;
    CGFloat margin = 1;

    if (ABS(endRect.origin.y - startRect.origin.y) < 5) {//They are in the same line
        CGRect wholeRect = CGRectMake(startRect.origin.x, startRect.origin.y + padding, endRect.origin.x - startRect.origin.x, startRect.size.height - …
Run Code Online (Sandbox Code Playgroud)

typesetting objective-c uitextview core-text ios

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

将现有单例升级为ARC

在Objective-C中,如何用ARC编写单例?在ARC中,不允许覆盖release,autorelease,retain,retainCount方法,如何避免释放对象?我知道没有ARC,下面是一个经典的单身人士:

@interface SingletonObject
+ (SingletonObject*)sharedObject;
@end

SingletonObject *sharedObj;

@implementation SingletonObject
+ (id)allocWithZone:(NSZone *)zone
{
    if (sharedObj == nil) {
        //So the code [[SingletonObject alloc] init] is equal with [SingletonObject sharedObject]
        sharedObj = [super allocWithZone:zone];
    }
    return sharedObj; 
}


+ (void)initialize
{
    if (self == [SingletonObject class]) {
        sharedObj = [[SingletonObject alloc] init];
    }
}

+ (SingletonObject*)sharedObject
{
    return sharedObj;
}
- (id)retain
{
    return self;
}

- (unsigned)retainCount
{
    return UINT_MAX;  //denotes an object that cannot be released
}

- …
Run Code Online (Sandbox Code Playgroud)

singleton objective-c automatic-ref-counting

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