小编jus*_*tin的帖子

将空的.c文件添加到Xcode Cocoa项目会导致数千个错误

我的Cocoa应用程序有一个Xcode项目.到目前为止,这都是Objective-C.

从菜单添加新的.c文件(添加C文件和标题)后开始出现问题:test.c和header test.h.

当我尝试编译项目时,现在有成千上万的错误.所有这些都是关于语法错误的抱怨.例如:

NSObjCRuntime.h: Expected identifier or '(' before '@' token
Run Code Online (Sandbox Code Playgroud)

这两个新文件,test.c并且test.h不包含任何代码,只有默认的标题注释.我的项目配置必须真正打破一些东西.当我删除这两个文件时,项目编译得很好.

项目语言设置为C99.还有什么我可以检查的吗?

谢谢,马克

c xcode objective-c

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

NSString属性是复制还是只读?

我看到很多讨论说我应该使用copy for NSString属性,因为它会阻止其他人在我背后更改它.但那么为什么我们不为它设置只读属性呢?

更新

谢谢回答我的问题.但问题是,对于NSString属性,你总是不希望别人修改它,对吧?您可以自己修改它,但绝对不能修改其他人.我猜大多数时候NSString都会设置它的初始值(由你或其他人设置),之后只有你会修改它.那么为什么不只是使用readonly属性

其实我大部分时间都使用复制品.但后来我发现大部分时间我只在init方法中使用那些setter.所以我认为我应该使用readonly而不是copy来处理这些情况.

因此,让我以这种方式提出问题:如果您只在init方法中使用这些setter作为NSStrings,那么您应该使用readonly.这是一个合理的结论吗?

memory-management properties objective-c nsstring

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

Haskell中多个线程的高性能唯一时间戳ID

我有多个线程处理事件.我想为每个事件分配一个纳秒时间戳.但它必须是一个独特的id.因此,在奇怪的情况下,两个事件到达使得它们将被分配相同的时间戳,我希望其中一个增加一纳秒.鉴于实际精度不在纳秒级别,就系统的时间戳性质而言,这是可以的.

在一个帖子中,这是一个微不足道的问题.但是跨越多个线程,它变得更具挑战性.性能是绝对关键的,所以天真地同步典型的id生成器类型的东西的想法似乎会阻止太多.

是否有一些方法可以解决这个问题,只需要很少锁定或不锁定?

performance multithreading haskell uniqueidentifier

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

iOS时使用实例变量或getter方法

我有一个关于使用getter和实例变量的问题.我们来看一个例子吧.

假设我有一个.h文件:

@property (nonatomic,strong) NSString *name
Run Code Online (Sandbox Code Playgroud)

在.m文件中,我以这种方式合成该变量:

@synthesize name = _name;
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:使用之间有什么区别:

[self.name aMethod]
Run Code Online (Sandbox Code Playgroud)

[_name aMethod]
Run Code Online (Sandbox Code Playgroud)

谢谢!

properties objective-c accessor ios

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

如何在cocos2d,iOS中正确分配和释放box2d对象

我想知道在iOS的cocos2d中分配和释放box2d对象(b2World和b2Body)的最佳方法是什么?

分配

@property (nonatomic, assign) b2World * world;
@property (nonatomic, assign) b2Body * body;
Run Code Online (Sandbox Code Playgroud)

取消分配

-(void)dealloc {
      delete _world;
      _world = nil;
      _body = nil;
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么我不能使用保留和释放b2World和b2Body,为什么我们在dealloc方法中使用delete _world?为什么我们不删除正文对象呢?(删除_body不起作用).设置指向nil的指针时:我应该使用nil还是NULL?

c++ memory-management objective-c box2d-iphone ios

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

与std :: mutex相比,其他互斥包装程序库有哪些优点?

C++标准库提供std::mutex (lock, unlock, try_lock)了可在多线程环境中工作的功能.

此外,我听说过有关包装库(例如Boost::mutex)的讨论,从我可以看到,它提供了相同的功能(lock, unlock, try_lock).

我的问题是,使用这种包装库比标准库有什么优势?

c++ multithreading mutex locking standard-library

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

是不是提供了明确的析构函数不好的做法?

如果我没有为C++类提供显式的析构函数,因为我确信编译器提供的默认析构函数是我所有类的需求,那很好吗?或者这被认为是不好的做法?

c++ destructor

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

如何使Factory的Header不依赖于它创建的模板化对象?

我有一个像这样的抽象基类:

class AbstractBaseClass
{}; 
Run Code Online (Sandbox Code Playgroud)

从中衍生出来的模板化具体类:

template<class T>
class ConcreteClass : public AbstractBaseClass
{
public:
   ConcreteClass(T input) : data(input) {}
private:
    T data;
};
Run Code Online (Sandbox Code Playgroud)

我有一个创建AbstractBaseClasses的工厂类

class MyFactory
{
public:
   boost::shared_ptr<AbstractBaseClass> CreateBlah();
   boost::shared_ptr<AbstractBaseClass> CreateFoo();

   template<class T>
   boost::shared_ptr<AbstractBaseClass> Create(T input)
   {
      return boost::shared_ptr<AbstractBaseClass>(new ConcreteClass<T>(input));
   }
};
Run Code Online (Sandbox Code Playgroud)

这个问题是,现在使用MyFactory的一切都必须将整个实现包含在ConcreteClass中.理想情况下,除了MyFactory之外我什么都不想了解ConcreteClass.

有没有办法设计这个来实现这个目标?(除了在MyFactory中为我想要的每种类型手动创建一个新的Create函数,而不是模板化它).

c++ dependencies templates design-patterns factory

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

如何覆盖Objective-C中的可变方法

我正在尝试扩展一个具有可变方法的类,例如:

- (void)someMethod:(id)arguments, ... ;
Run Code Online (Sandbox Code Playgroud)

并在子类中通过调用原始方法覆盖它,如:

- (void)someMethod:(id)arguments, ... {
    [super someMethod:arguments, ...];

    // override implementation
    ...
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用.有谁知道如何工作?谢谢.

objective-c variadic variadic-functions

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

Xcode捕获所有未捕获的异常

在Xcode中,我可以创建一个断点来捕获所有异常(异常断点).然而,这个断点也将在尝试捕获的情况下发射.

我正在使用第三方库,因此try-catch情况是一个事实,而不是一个选项.

有没有办法只处理未捕获的异常,而不是所有异常?

xcode exception-handling breakpoints exception uncaught-exception

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