小编nul*_*ull的帖子

为什么Objective-C不支持私有方法?

我已经看到了一些在Objective-C中声明半私有方法的策略,但似乎没有办法制作一个真正的私有方法.我接受.但是,为什么会这样呢?我基本上所说的每一个解释,"你不能这样做,但这里有一个近似的近似."

有许多适用于关键字的ivars(部件)控制它们的范围,例如@private,@public,@protected.为什么不能这样做呢?它似乎是运行时应该能够支持的东西.我缺少一种潜在的哲学吗?这是故意的吗?

objective-c objective-c-runtime

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

CAEmitterLayer会在触摸事件上发出随机不需要的粒子

我正试图建立一个CAEmitterLayer制作五彩纸屑的效果,我遇到了两个问题:

  1. 每当我将birthRate我的单元格设置为非零值以启动动画时,我会在屏幕上随机放置一系列单元格,这些单元格会正常生成动画,然后发射器继续正常发射.
  2. 每当emitterCells我在屏幕上绘制内容时,无论何时触摸屏幕,发射器都会emitterCells(看似)随机抽取(看似)随机时间量的随机位置.发射器中没有任何内容与任何触摸事件相关联(即我不是故意在触摸事件上绘制任何东西),但该图层位于具有多个嵌入视图的视图中.我触摸得越多,出现的细胞就越多.

这是我设置发射器的代码,然后启动和停止它(一旦我调用了stop函数,然后点击屏幕就会停止创建新的随机元素):

- (void)setupConfetti
{
    self.confettiLayer = [CAEmitterLayer layer];
    [self.view.layer addSublayer:self.confettiLayer];
    [self.view.layer setNeedsDisplay];

    self.confettiLayer.emitterPosition = CGPointMake(1024.0/2,-50.0);
    self.confettiLayer.emitterSize = CGSizeMake(1000.0, 10.0);
    self.confettiLayer.emitterShape = kCAEmitterLayerLine; 
    self.confettiLayer.renderMode =kCAEmitterLayerUnordered;

    CAEmitterCell *confetti = [CAEmitterCell emitterCell];

    confetti1.contents =  (id)[[UIImage imageNamed:@"confetti.png"] CGImage];

    confetti.emissionLongitude = M_PI;
    confetti.emissionLatitude = 0;
    confetti.lifetime = 5;
    confetti.birthRate = 0.0;
    confetti.velocity = 125;
    confetti.velocityRange = 50;
    confetti.yAcceleration = 50;
    confetti.spin = 0.0;
    confetti.spinRange = 10;
    confetti.name = @"confetti1";

    self.confettiLayer.emitterCells = [NSArray arrayWithObjects:confetti, nil]; …
Run Code Online (Sandbox Code Playgroud)

objective-c ios caemitterlayer

38
推荐指数
2
解决办法
2608
查看次数

iOS 7自定义后退按钮

我想使用自定义后退按钮.在iOS 6中,一切都很完美,但iOS 7很奇怪.

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[[UIImage imageNamed:@"back_button_normal"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 12.0, 0, 12.0)] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

首先,它没有iOS 7箭头,也没有背景图像.

(俄语语言环境)

初始状态

然后,如果按下按钮,则会出现背景图像.此外,我为UIControlStateHighlighted状态设置了背景图像,当您按住按钮时,按下突出显示的图像也会出现.按下任何后退按钮后,所有后退按钮都有背景图像.

一旦被迫

但!如果您提供模态视图控制器,将其关闭,然后按任何视图控制器 - iOS 7每个后退按钮都会出现箭头.

我用的是DP5.这是UIKit的错误吗?

PS我还试图手动创建后退按钮,使用UIBarButtonItem,设置背景图像,然后self.navigationItem.backBarButtonItem = barButtonItem;没有帮助.然后我尝试将背景图像设置为禁用状态并更改我的栏按钮项的启用属性,也没有帮助.

在此输入图像描述

cocoa-touch ios ios7 xcode5

38
推荐指数
4
解决办法
6万
查看次数

目标c中的构造函数

嗨,我创建了我的iPhone应用程序,但我遇到了问题.我有一个classViewController我实施我的程序的地方.我必须分配3 NSMutableArray但我不想在grapich方法中这样做.我的班级没有像java这样的构造函数?非常感谢,对不起我的英语XP

// I want put it in a method like constructor java

arrayPosition = [[NSMutableArray alloc] init];
currentPositionName = [NSString stringWithFormat:@"noPosition"];
Run Code Online (Sandbox Code Playgroud)

iphone constructor objective-c

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

用于Iphone 4s的蓝牙LE应用程序的后台时间问题

我在Iphone-4s中为我的应用程序使用核心蓝牙框架.
这通常必须是一个可以尽可能长时间运行的后台应用程序.

现在它只运行40分钟 - 最多1小时.

我希望至少1天左右.

对于这个"bluetooth-central"值,在.plist文件的"Required background modes"键中添加.

好像我的应用程序将在最后"暂停"模式.因为当我再次打开应用程序(背景到前景状态)时它再次发送通知,这意味着蓝牙连接仍然连接,并且BLE设备仍在发送通知.如果我按主页按钮并且应用程序进入后台,则不会再次收到通知.

任何人都可以告诉我为什么我的应用程序只能在后台模式下工作最多1小时.它应该继续像普通的音乐应用程序一样在后台运行,就像永远.

苹果公司是否有任何具体说明背景应用程序(这是连续运行的背景应用程序中有哪一个属于5个类别)失败的情况,它将进入暂停模式?

参考" iPhoneAppProgrammingGuide",在" Communicating with a Bluetooth Accessory"部分,我开始知道,对于蓝牙LE应用程序的长期运行后台任务2实现是必要的:

1)UIBackgroundModes键应该是Info.plist文件中的"bluetooth-central" .2)任何支持蓝牙数据后台处理的应用都必须基于会话.

因此,对于我的应用程序,FIRST实现已合并,并且该应用程序能够在后台运行并执行所有任务,持续时间最长为1小时.

现在我需要实现第二个实现.即基于会话.根据文档,即使应用程序处于"暂停"状态,也可以获取事件.我试图创建一个特定于蓝牙LE(核心蓝牙框架)的合适会话,如" EASession经典蓝牙(外部附件框架)"中的" ".但我没有找到它.

基本上我不确定哪个会话类需要用于BLE目的.对于音频/视频,网络和互联网,外部配件,可提供单独的会话类.核心蓝牙框架没有.

任何人都可以帮助我,哪个会话类适合BLE.

background-application ios core-bluetooth bluetooth-lowenergy

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

为什么iOS 5无法连接到运行JDK 1.6的服务器,而不能连接到JDK 1.5

我们有一个Java Socket服务器监听SSLSocket(端口443)和一个连接它的iOS应用程序.在iOS 5.1上运行时,当我们将Java版本的服务器从JDK 1.5升级到1.6(或1.7)时,应用程序停止工作.在iOS 6上运行时,该应用程序可以很好地连接到JDK 5和6.

iOS应用报告错误: -9809 = errSSLCrypto.在Java方面,我们得到了javax.net.ssl.SSLException: Received fatal alert: close_notify.

在Java服务器端,我们启用了所有可用的密码套件.在客户端,我们测试了几个不同的套件,虽然我们还没有完成一个涉及每个单独启用的测试.现在,当我们使用时TLS_DH_anon_WITH_AES_128_CBC_SHA它失败了,虽然它已经失败了,但我们开始认为它不是套件.

这是调试输出.它一直到达ServerHelloDone,然后很快失败:

Is secure renegotiation: false
[Raw read]: length = 5
0000: 16 03 03 00 41                                     ....A
[Raw read]: length = 65
0000: 01 00 00 3D 03 03 50 83   1E 0B 56 19 25 65 C8 F2  ...=..P...V.%e..
0010: AF 02 AD 48 FE E2 92 CF   B8 …
Run Code Online (Sandbox Code Playgroud)

java ssl jsse diffie-hellman ios5

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

INSERT到表中而不指定列名

INVOICE TABLE 想通过不指定列名来插入值SQL Server,我试过这个但是它不起作用.请帮忙

INSERT INTO INVOICE
VALUES( 1,1,KEYBOARD,1,15,5,75)
Run Code Online (Sandbox Code Playgroud)

sql sql-server

19
推荐指数
4
解决办法
6万
查看次数

来自UIGraphicsGetImageFromCurrentImageContext()的更高质量的图像

我目前正在使用UIGraphicsGetImageFromCurrentImageContext()将内容的图像保存到用户的相机胶卷,但图像质量比我在模拟器中进行屏幕截图更差.有没有办法改善它?无论如何,保存的图像的格式是什么?BMP?有没有办法改变这个?

这是我的保存代码:

CGSize size = [content bounds].size;
UIGraphicsBeginImageContext(size);
[[content layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage *originalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

UIImageWriteToSavedPhotosAlbum(originalImage, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
Run Code Online (Sandbox Code Playgroud)

core-graphics objective-c ios

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

拦截XMLHttpRequest并修改responseText

我正在尝试构建一个脚本,它将充当本机XMLHttpRequest对象的代理/包装器,使我能够拦截它,修改responseText并返回原始的onreadystatechange事件.

上下文是,如果应用程序尝试接收的数据已在本地存储中可用,则中止XMLHttpRequest并将本地存储的数据传递回应用程序成功/失败回调方法.假设我无法控制应用程序现有的AJAX回调方法.

我原本试过以下想法..

var send = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function(data){
   //Do some stuff in here to modify the responseText
   send.call(this, data);
};
Run Code Online (Sandbox Code Playgroud)

但正如我现在所建立的那样,responseText是只读的.

然后我尝试退后一步,编写自己的完整本机代理XMLHttpRequest,最终编写自己的本机方法版本.与此处讨论的相似......

http://www.ilinsky.com/articles/XMLHttpRequest/#implementation-wrapping

但它很快就变得混乱,并且仍然难以将修改后的数据返回到原始onReadyStateChange方法中.

有什么建议?这甚至可能吗?

javascript ajax xmlhttprequest

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

iOS复合谓词

我正在编写一个包含照片数据库的应用程序.每张照片都有几个与之关联的标签,应用程序的搜索页面包含大量切换功能,允许用户仅根据他们感兴趣的标签搜索照片.这些标签中的每一个都存储了整数 ID,因为它们对应于外部数据库的ID,所以我试图仅通过ID查找它们. 所有ID字段都已编制索引.

当我正在编写的谓词变得非常大时,问题就出现了,因为用户可以从许多不同的标签中进行选择以进行过滤.这些标签分为3类[出版物,品牌和产品],因此我的查询被设置为在一个类别中"或",并且在这些类别中"和".

示例查询谓词最终看起来像这样:

(parentPublication.publicationId==1 OR parentPublication.publicationId==2 OR parentPublication.publicationId==5) 
AND (ANY brands.brandId==12 OR ANY brands.brandId==2 OR ANY brands.brandId==0 OR ANY brands.brandId==3 OR ANY brands.brandId==5 OR ANY brands.brandId==6 OR ANY brands.brandId==7) 
AND (ANY products.productId==2 OR ANY products.productId==3 OR ANY products.productId==6)
Run Code Online (Sandbox Code Playgroud)

他们可以变得更大,但你明白了.我的问题是,由于所有这些都在执行昂贵的连接,一旦用户选择超过10或15,查询运行的时间非常长,甚至可能导致应用程序崩溃.

看起来像写下这样的东西会更有效率:

parentPublication.publicationId IN (1,2,5) 
AND (ANY brands.brandId IN (12,2,0,3,5,6,7))
AND (ANY products.productId IN (2,3,6))
Run Code Online (Sandbox Code Playgroud)

但我似乎无法使用该语法.

所以我的问题是:是否支持这种语法,如果是这样,有人可以告诉我如何正确编写它吗?

或者是否有更好的方法可以同时处理针对Core Data的此类查询?

core-data nspredicate ios

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