小编Rob*_*rto的帖子

如果对引用类型(对象)使用"assign"属性,则为Xcode警告

当使用assignARC中的属性声明对象(引用类型)属性时,是否存在Xcode警告或任何形式的警告:

@property (nonatomic, assign) NSNumber *myNumber;
Run Code Online (Sandbox Code Playgroud)

我将long属性转换为NSNumber意外忘记将属性更改assignstrong.

没有编译时警告或错误,并且有时会发生的运行时错误只会发生,这是一个非常模糊的崩溃.只有在调试时才会出现崩溃和类似错误"message sent to a deallocated instance",这是因为在开发过程中使用了僵尸对象.

对于非调试版本,崩溃不会经常发生,并且会报告(例如,Crashlytics)EXC_BAD_ACCESS - KERN_INVALID_ADDRESS.我假设崩溃是由这个问题引起的.

我知道assign如果你想保持对它的弱引用,那么它是对象的有效选项,并且当对象被释放时你不希望指针自动变为NULL.但是,我想应该有一个可以打开或关闭的警告,因为assign不是你通常想在ARC中使用的东西,但我在构建设置中找不到它.

xcode objective-c automatic-ref-counting

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

Objective-c中的自定义属性属性

可以像在VB.NET中一样在Objective-C中创建自定义属性属性吗?例如,在VB.NET中,您可以创建"Browsable"属性并在运行时读取它以确定是否应显示属性.

Public Class Employee
    <Browsable(True)> _
    Public Property Property1() As String
        Get

        End Get
        Set(ByVal Value As String)

        End Set
    End Property

    <Browsable(False)> _
    Public Property Property2() As String
        Get

        End Get
        Set(ByVal Value As String)

        End Set
    End Property
End Class
Run Code Online (Sandbox Code Playgroud)

我想在Objective-C中做同样的事情,即使它是一个固定的属性,只能在编译时设置,根本无法更改.

我要做的是为我的类的属性添加一个属性,以确定属性是否应该序列化.

我知道标准的Objective-C属性(只读,非原子等),但那些对我没有帮助......除非你有创造性地使用它们.我还研究了将C属性与__attribute__(("Insert attribute here"))关键字一起使用,但C具有特定用途的特定属性,我甚至不确定您是否可以在运行时读取它们.如果我错过了一个可以帮助我的话,请告诉我.

我试过用typdef.例如:

typdef int serializableInt;
serializableInt myInt;
Run Code Online (Sandbox Code Playgroud)

并使用property_getAttributes()Objective-C运行时函数,但它告诉我的是myInt是一个int.我想在这种情况下,typedef非常像一个宏......除非我能在运行时创建一个serializableInt类型的变量.无论如何,这里是关于你获得的价值的Apple文档property_getAttributes().

另一个要求是该属性必须与NSObject子类以及原始数据类型一起使用.我想到了将类黑名单或白名单添加到类中以便告诉我要跳过或序列化哪些属性的想法,这基本上是相同的想法.我只是试图将黑/白名单移动到属性,这样当你看到一个类的头文件时它很容易理解,它在我创建的任何类中都是一致的,并且它不易出错.

此外,这是需要考虑的事情.我真的不需要attribue有一个值(TRUE或FALSE; 1,2,3;或其他),因为属性本​​身就是值.如果属性存在,则序列化; 否则,跳过.

任何帮助表示赞赏.如果您确定在Objective-C上无法做到这一点,请告诉我.谢谢.

attributes properties objective-c ios

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

在Xcode中使用具有相同名称的资源

有没有办法为Xcode项目添加多个具有相同名称的资源,其中1个优先于其他资源?

示例:我向Xcode项目添加了两个名为icon.png的文件.它们位于文件系统中的不同文件夹(Folder1/icon.png和Folder2/icon.png)以及Xcode中的不同组.有没有办法告诉Xcode让Folder2/icon.png优先于Folder1/icon.png?如果只存在1个icon.png,那么就使用那个.

谢谢.

编辑(2010-12-23):

您可以在Xcode项目中拥有多个具有相同名称的文件,即使它们不在单独的文件夹引用中,但它们位于不同的组中.编译完成后,应用程序包(它将是平的,没有文件夹),只有一个文件副本(icon.png).你如何选择使用哪个文件副本?

我被告知你可以为BlackBerry做这个.它的工作原理如下:编译器将沿着项目中的文件列表向下,并开始将它们添加到应用程序包中.如果它看到重复,它将覆盖(或不覆盖),因此底部(或顶部)的文件将具有更高的优先级,并将成为最终的捆绑.

iphone xcode ios

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

确定函数是否是异步信号安全的(可以在信号处理程序中调用)

我的问题是:

  1. 如果您无法访问其实现,是否有办法确定函数是否是异步信号安全的?
  2. 如果没有,有没有办法测试函数是否异步信号安全足以从信号处理程序调用?

如果您读取signal()或sigaction()的手册页,您将获得一个异步信号安全函数列表(可以在信号处理程序中安全地调用的函数).但是,我认为这份清单并非详尽无遗.例如,Async-signal-safe函数头下的以下页面http://linux.die.net/man/7/signal读取:

POSIX.1-2004(也称为POSIX.1-2001技术勘误2)要求实现以保证在信号处理程序内可以安全地调用以下函数:

然后它继续列出上面手册页中列出的正常异步信号安全功能.当我读它时,它说"它需要",而不是"这些是唯一的".

例如,该站点说back_trace_symbols_fd()是异步信号安全的.该函数获取的是来自dladdr()的数据,并且它不像back_trace_symbols()那样使用malloc(),所以看起来它可能是安全的.此外,我做了一些测试,dladdr()的输出结构包含char*变量,但这些变量在运行时不是malloc.即使在调用dladdr()之前,它们指向的char字符串也存在于运行时.

任何可以指出我正确方向的想法或想法都会受到赞赏.

c posix signals objective-c

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

用触摸绘制和擦除线条

我在单独的UIImageViews中有一个背景图像(ImageBG)和一个前景图像(ImageFG).它们的大小相同,顾名思义,ImageBG落后于ImageFG,因此您无法看到ImageBG.

如果用户开始"绘制"它们,而不是出现用户触摸屏幕的线条,我希望ImageFG的那部分变得透明并显示ImageBG.

我能想到的最接近的事情是划伤和胜利.

我知道如何在图形上下文中进行绘制,但是当我绘制一条透明线(alpha = 0)时,嗯......我在我的图形上下文中的任何内容上都有一条透明线,所以基本上没有绘制任何内容.这是我用来设置笔触颜色的方法.

CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1.0, 0.0, 0.0, 0.0)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我知道这是可能的,因为那里有应用程序可以做到这一点.

任何提示,技巧或方向表示赞赏.

cocoa-touch objective-c ios

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