我刚加载了Xcode 6 GM种子.现在我想提交我的应用程序的更新.到目前为止存档工作.但当我点击"提交"时,一旦上传加载栏出现Xcode崩溃.
我需要优胜美地吗?
我不得不从Apple下载Application Loader,因为Xcode找不到它.
我正在考虑Objective-C中Try-Catch的优缺点.根据这篇文章在iOS中消除NSException神话:我们可以使用@ try ... @ catch,@finally?,try-catch并不是那么糟糕,除了它在ARC中泄漏内存.
那么try-catch如何导致内存泄漏?
std::back_inserter仅适用于容器push_back,因此它不适用于set和map
另一方面,std::inserter适用于所有容器类型.所以我可以一直使用std::inserter(container, container.end())吗?
以下代码适用于所有类型的容器类型吗?
template <class TContainer, class TElement>
TContainer create(TElement element)
{
TContainer container;
auto inserter = std::inserter(container, container.end());
for (int i = 0; i < some_number; ++i)
{
element = do_something(element);
if (condition)
{
*inserter++ = element;
}
}
return container;
}
// use like
create<std::vector<int>>(1);
create<std::set<int>>(1);
Run Code Online (Sandbox Code Playgroud) 所以我试图在我的矢量背面添加整数,并错误地认为push_back()将新数据添加到矢量的前面(又名矢量[0]).我做了一个测试在Xcode和测试push_back()反对emplace_back(),并得到了相同的结果.我认为他们是不同的,但这让我觉得他们可能会做同样的事情.如果是这样,为什么矢量有不同的方法?
这是我的代码,以防我正在做的事情:
#include <vector>
#include <iostream>
using namespace std ;
int main(int argc, const char * argv[])
{
// for push_back
vector<int> push;
push.push_back(1);
push.push_back(2);
push.push_back(3);
push.push_back(4);
push.push_back(5);
push.push_back(6);
//display push_back
for (int i = 0; i < push.size(); i++) {
cout << "push[" << i << "]: " << push[i] << endl;
}
// distance between the two funcitons
cout << endl << endl;
vector<int> emplace;
emplace.emplace_back(1);
emplace.emplace_back(2);
emplace.emplace_back(3);
emplace.emplace_back(4);
emplace.emplace_back(5);
emplace.emplace_back(6);
//display …Run Code Online (Sandbox Code Playgroud) 在这段代码中
id (^block)(void) = ^(void) {
return nil;
};
Run Code Online (Sandbox Code Playgroud)
我有这个错误
不兼容的块指针类型使用类型'void*(^)(void)'的表达式初始化'id(^ __ strong)(void)'
所以我必须明确地转换nil为id类型
id (^block)(void) = ^(void) {
return (id)nil;
};
Run Code Online (Sandbox Code Playgroud)
让编译器开心 为什么nil不id打字?
并为此代码
__typeof__(nil) dummy;
dummy = [NSObject new];
Run Code Online (Sandbox Code Playgroud)
将Objective-C指针类型'NSObject*'隐式转换为C指针类型'typeof(((void*)0))'(又名'void*')需要桥接转换
这是说nil就是(void *)0,但是不只是一样NULL?我nil应该(id)0而且Nil应该是(Class)0?
我正在使用Xcode 4.6.2
编译器:Apple LLVM版本4.2(clang-425.0.28)(基于LLVM 3.2svn)
我知道有很多关于方法调配的资源.但是,是否可以从私有API中调用方法?问题是没有头文件.我想在PrivateFramework中调用私有类中的方法,例如(随机示例)Message.framework方法
这是个人测试,我知道它会被Apple拒绝遗忘.
我有一个沙盒Cocoa应用程序,在导出过程中,需要运行第三方命令行工具.此工具似乎是硬编码/tmp用于其临时文件; 沙盒不允许访问此文件夹,因此导出失败.
如何运行此工具?我无法访问其源代码,因此我无法修改它以使用NSTemporaryDirectory()它,并且它似乎不尊重TMP或TEMPDIR环境变量.由于我不理解的原因,给自己一个com.apple.security.temporary-exception.files.absolute-path.read-write权利似乎也没有用.
有没有办法在我的沙盒中重新映射文件夹?我可以使用一些不起眼的技巧吗?我应该尝试以某种方式修补工具的二进制文件吗?我在这里结束了我的智慧.
关于使用lock来保护我的共享数据结构,我几乎没有问题.我正在使用C/C++/ObjC/Objc ++
例如,我有一个在多线程环境中使用的计数器类
class MyCounter {
private:
int counter;
std::mutex m;
public:
int getCount() const {
return counter;
}
void increase() {
std::lock_guard<std::mutex> lk(m);
counter++;
}
};
Run Code Online (Sandbox Code Playgroud)
我是否需要std::lock_guard<std::mutex> lk(m);在getCount()方法中使用它来使其线程安全?
如果只有两个线程会发生什么:读者线程和编写器线程然后我必须保护它吗?因为只有一个线程正在修改变量所以我认为不会发生丢失更新.
如果共享原始类型变量有多个int编写器/阅读器(例如)如果我只锁定写入方法而不是读取方法,可能会发生什么样的灾难?与64位类型相比,8bits类型会有什么不同吗?
原始类型是默认的原子吗?例如,写入a char始终是原子的?(我知道这在Java中是正确的,但我不知道c ++,如果平台很重要,我在Mac上使用llvm编译器)
我试图在运行时动态创建objc类,我需要Ivar在创建的类中添加一些.我发现class_addIvar哪些应该做我想要的,但我也发现了这些功能:
class_setIvarLayoutclass_getIvarLayoutclass_getWeakIvarLayoutclass_setWeakIvarLayout文档并没有真正说出有关这些方法的任何有用信息,我也无法从网上找到任何有用的解释.那他们是什么?如果我想做点什么,我是否需要使用它们Ivar?
我发现了一些问题和答案,以删除ios7中UITableViews的偏移量,即这一个 如何在iOS 7上修复UITableView分隔符?
我想知道是否有人遇到了正确的功能来删除插入边距.在objective-c中类似于这个答案的东西
if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {
[tableView setSeparatorInset:UIEdgeInsetsZero];
}
Run Code Online (Sandbox Code Playgroud) objective-c ×4
c++ ×3
c++11 ×3
ios ×3
c ×1
concurrency ×1
crash ×1
locking ×1
macos ×1
memory-leaks ×1
null ×1
stdvector ×1
submit ×1
swift ×1
try-catch ×1
uitableview ×1
xcode ×1