小编Jos*_*ell的帖子

#import使用尖括号<>和引号""

我想知道是什么决定你是否被允许使用<Header.h>或者"Header.h"当你在Objective-C中导入文件时.到目前为止,我的观察结果是您""在项目中使用了引用标记,这些文件是您获得实现源的,并且<>在引用库或框架时使用尖括号.

但究竟是如何运作的呢?为了让我自己的类使用括号,我需要做些什么?现在Xcode不允许我为自己的标题做这件事.

此外,通过查看一些框架标题,我看到标题相互引用<frameworkname/file.h>.这什么用?它看起来很像Java中的包,但据我所知,Objective-C中没有包这样的东西.

syntax import packages objective-c

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

警告:"格式不是字符串文字,没有格式参数"

自升级到最新的Xcode 3.2.1和Snow Leopard以来,我一直在收到警告

"格式不是字符串文字,没有格式参数"

来自以下代码:

NSError *error = nil;

if (![self.managedObjectContext save:&error]) 
{
    NSLog([NSString stringWithFormat:@"%@ %@, %@", 
       errorMsgFormat, 
       error, 
       [error userInfo]]);      

}
Run Code Online (Sandbox Code Playgroud)

如果errorMsgFormatNSString格式说明符(例如"print me like this: %@":),上面的NSLog调用有什么问题?什么是修复它的建议方法,以便不生成警告?

warnings objective-c string-formatting nslog

109
推荐指数
6
解决办法
8万
查看次数

libsqlite3.dylib和libsqlite3.0.dylib有什么区别?

我正在开始使用我正在开发的应用程序中的SQLite数据库.我还没有遇到问题,但本教程的早期步骤之一是链接SQLite3框架.本教程调用libsqlite3.0.dylib,但我注意到另一个libsqlite3.dylib.后者只是最新的v3库的符号链接,就像UNIX上的包管理器的约定还是有区别的?

亚当

sqlite ios

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

为什么代码在线程之间改变共享变量显然不会受到竞争条件的影响?

我正在使用Cygwin GCC并运行此代码:

#include <iostream>
#include <thread>
#include <vector>
using namespace std;

unsigned u = 0;

void foo()
{
    u++;
}

int main()
{
    vector<thread> threads;
    for(int i = 0; i < 1000; i++) {
        threads.push_back (thread (foo));
    }
    for (auto& t : threads) t.join();

    cout << u << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

用线编译:g++ -Wall -fexceptions -g -std=c++14 -c main.cpp -o main.o.

它打印1000,这是正确的.但是,由于线程覆盖了先前增加的值,我预计数量会减少.为什么这段代码不会受到相互访问的影响?

我的测试机器有4个核心,我对我所知道的程序没有任何限制.

当用foo更复杂的东西替换共享的内容时,问题仍然存在,例如

if (u % 3 == 0) {
    u += 4;
} else …
Run Code Online (Sandbox Code Playgroud)

c++ race-condition

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

在Objective-C中将消息发送到nil

作为正在阅读Apple的Objective-C 2.0文档的Java开发人员:我想知道" 向nil发送消息 "意味着什么 - 更不用说它实际上有用了什么.摘自文档:

Cocoa中有几种模式可以利用这一事实.从消息返回到nil的值也可能是有效的:

  • 如果该方法返回一个对象,任何指针类型,任何大小小于或等于sizeof(void*),float,double,long double或long long的整数标量,则发送给nil的消息返回0 .
  • 如果该方法返回一个结构,如Mac OS X ABI函数调用指南所定义的那样在寄存器中返回,那么发送给nil的消息将为数据结构中的每个字段返回0.0.其他结构数据类型不会用零填充.
  • 如果该方法返回除上述值类型之外的任何内容,则发送到nil的消息的返回值是未定义的.

Java是否让我的大脑无法解释上面的解释?或者是否有一些我想念的东西会让它像玻璃一样清晰?

我确实在Objective-C中得到了消息/接收器的概念,我只是对接收器碰巧感到困惑nil.

objective-c

105
推荐指数
10
解决办法
5万
查看次数

从NSTextField获取价值

我有一个NSTextField,我需要将字段的值变为变量.什么是合适的方法?

macos cocoa nstextfield

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

确定数字是十的倍数还是在一组特定范围内

我的程序中需要一些循环.我可以写出伪代码,但我不完全确定如何逻辑地编写它们.

我需要 -

if (num is a multiple of 10) { do this }

if (num is within 11-20, 31-40, 51-60, 71-80, 91-100) { do this }
else { do this } //this part is for 1-10, 21-30, 41-50, 61-70, 81-90
Run Code Online (Sandbox Code Playgroud)

这是一个蛇和梯子棋盘游戏,如果它对我的问题更有意义.

我想第一个if语句我需要使用模数,是否if (num == 100%10)正确?

第二个我不知道.我可以写出来,if (num > 10 && num is < 21 || etc)但必须有比这更聪明的东西.

c++ comparison conditional-statements integer-arithmetic

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

声明的属性是否需要相应的实例变量?

Objective-C 2.0中的属性是否需要声明相应的实例变量?例如,我习惯做这样的事情:

MyObject.h

@interface MyObject : NSObject {
NSString *name;
}
@property (nonatomic, retain) NSString *name;
@end
Run Code Online (Sandbox Code Playgroud)

MyObject.m

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

但是,如果我这样做了:

MyObject.h

@interface MyObject : NSObject {
}
@property (nonatomic, retain) NSString *name;
@end
Run Code Online (Sandbox Code Playgroud)

这仍然有效吗?它与我之前的例子有什么不同吗?

objective-c instance-variables declared-property

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

如何摆脱Xcode中的"未使用的变量"警告?

我完全理解为什么会出现未使用的变量警告.我不想一般地压制它们,因为它们在大多数情况下非常有用.但是,请考虑以下(人为)代码.

NSError *error = nil;
BOOL saved = [moc save:&error];
NSAssert1(saved, @"Dude!!1! %@!!!", error);
Run Code Online (Sandbox Code Playgroud)

Xcode报告这saved是一个未使用的变量,当然它不是.我怀疑这是因为NSAssert1是一个宏.该NS_BLOCK_ASSERTIONS是宏没有定义,那么目标C断言肯定启用.

虽然它没有伤害任何东西,但我发现它不整洁且烦人,我想压制它,但我不知道该怎么做.将变量分配给自己可以摆脱编译器警告,但如果存在这样的事情,我宁愿以"正确"的方式进行.

xcode objective-c compiler-warnings unused-variables

96
推荐指数
9
解决办法
6万
查看次数

使用iPhone 6/iOS 8阅读NFC标签

既然Apple刚宣布iPhone 6将配备NFC芯片,那么有人知道iOS 8是否能够为iPhone 6设备读取/检测RFID标签?有人有任何细节可以分享吗?

iphone rfid nfc ios ios8

96
推荐指数
4
解决办法
18万
查看次数