我想知道如何创建Class目标c中指定的对象.我在运行时文档中缺少一些方法吗?如果是这样的话是什么?我希望能够做类似以下的事情:
NSDictionary *types;
-(id<AProtocol>) createInstance:(NSString *) name
{
if ((Class cls = [types objectForKey:name]) != nil)
{
return new Instance of cls;
}
else
{
[NSException raise:@"class not found" format:@"The specified class (%@) was not found.", name];
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,名称不是类的名字,但它的缩写,我不能做什么是显示在创建一个从NSString的Objective-C中的类名的对象.
我找到了一份新闻稿,声明Mono现在支持本机客户端的编译.目前还不清楚这是仅可以从单独的github mono fork获得,还是作为标准发行版的一部分提供.
我已经构建了分叉单声道发行版,但是我无法找到有关如何构建本机客户端可执行文件的任何示例,以便我可以在Chrome中运行它.
有人知道一个示例项目,或者您能提供一个如何为NaCl构建Mono应用程序的示例吗?
我想发布这个是因为我不确定我在一个简单的赋值语句中遇到了什么问题.我正在做一个家庭作业,要求我在一个简单的程序中编写结构和函数来绘制ASCII字符的形状.现在我只是想测试我编写的函数,我试图为Circle结构的符号元素赋值,只是为了测试我写的DrawShape函数.当我尝试为它分配一个*char时,我收到一条错误消息"错误:从'const char*'无效转换为'char'".我会将整个代码放入其中,尽管它很长且未完成.任何帮助都将不胜感激.我得到的问题是在"circle1.char ='*'"的主要开头
#include <iostream>
#include <math.h>
#include <cstdlib>
using namespace std;
const int NUMBER_OF_ROWS = 26;
const int NUMBER_OF_COLUMNS = 81;
char drawSpace[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS];
struct Point{
int x;
int y;
};
struct Circle{
Point center;
int radius;
char symbol;
bool buffer[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS];
};
bool setCircleRadius(Circle &b, int r);
bool setCircleCenter(Circle &b, int x, int y);
bool moveCircle(Circle &b, int x, int y);
void drawCircle (Circle b);
void lineChars(Line a);
void circleChars(Circle b);
void drawShapes();
int main() {
Circle circle1;
circle1.radius = …Run Code Online (Sandbox Code Playgroud) 在对矢量类型和ObjC运行时进行一些处理时,我遇到了一个非常令人困惑的问题.
就我所知,clang或GCC都不会为任何SIMD矢量类型提供"正确的"类型编码.
#import <Foundation/Foundation.h>
int main() {
typedef int int4 __attribute__((vector_size(16)));
typedef float float4 __attribute__((vector_size(16)));
NSLog(@"Int4: %s", @encode(int4));
NSLog(@"Float4: %s", @encode(float4));
}
Run Code Online (Sandbox Code Playgroud)
当使用GCC或clang编译和运行时,我得到以下输出:
2014-04-09 06:21:01.102 test[1707:507] Int4: 2014-04-09 06:21:01.103 test[1707:507] Float4:
而不是我期望的,这将是这样的:
2014-04-09 06:21:01.102 test[1707:507] Int4: ![16,16i] 2014-04-09 06:21:01.103 test[1707:507] Float4: ![16,16f]
根据此处的文档:
vectors'!['后跟vector_size(构成向量的字节数),后跟逗号,后跟向量的对齐(以字节为单位),后跟元素的类型,后跟']'
尝试从ObjC方法返回这些类型时会出现问题,而不是像![16,16i]@:以下方法的编码那样获得逻辑:
-(int4) foo;
Run Code Online (Sandbox Code Playgroud)
我只得到了这个字符串@:,这会导致他们两个NSMethodSignature并且NSInvocation基本上扯掉他们的裤子和段错误.
是否有一些编译器选项可以启用以恢复矢量类型的正确编码?或者这里唯一的解决方案是"不从ObjC方法返回向量"?
注意:返回(或传递)指向向量的指针也没有帮助,因为指向矢量的指针的编码很简单^,然后贪婪地匹配列表中的下一个参数,导致我的参数计数关闭再来一次.我想我可以将矢量转换为a void *,但那时真的是一个丑陋的黑客.
我想通过传递解决方案文件路径(.sln文件)和构建模式(调试,发布)来编译解决方案.我不想调用像devenv.exe或msbuild.exe这样的命令行进程,而是想使用API并知道是否存在编译错误.
可能吗 ?如果您认为自己知道该怎么做,请提供样品.
我在Objective-C中有类似的代码:
SubclassOfNSObject *GlobalVariableThatShouldNeverChange;
@implementation MyClass
+(void) initialize
{
[super initialize];
GlobalVariableThatShouldNeverChange = [[SubclassOfNSObject alloc] init];
// Change more stuff with GlobalVariableThatShouldNeverChange
}
@end
Run Code Online (Sandbox Code Playgroud)
我在整个代码中引用了这个,并且指向它的指针永远不会改变,因为我通过我的代码在任何地方使用它.问题是,当我运行我的测试时GHUnit,我GlobalVariableThatShouldNeverChange的指针被更改的奇怪问题(即它正在重新初始化.我有一个问题,通过自动释放池释放变量,这是固定的,我有一个解决这个问题的方法,但我想知道为什么?
谢谢!
unit-testing initialization global-variables objective-c autorelease
我最近(例如刚才)升级到了XCode 4,我总体上喜欢它,但有一件事让我烦恼.
当我写这样的代码时:
if (self = [super init])
{
...
}
Run Code Online (Sandbox Code Playgroud)
它给了我一个'问题': Using the result of an assignment as a condition without parentheses
如何抑制此警告,因为它强调所有红色文本,使我认为存在严重错误.由于我是一名经验丰富的Objective-C编码器,我真的不想改变我的做法并在我的init语句周围添加额外的括号.
这里有任何日历吗?我一直在寻找有关如何计算格里高利历中不规则出现的当年假期的信息.通常会发生这种情况,因为假期是基于较旧的农历.
我用google搜索广告并取得了一些进展但却无法完成.如果有人用现代语言描述他们的计算的示例代码,我将非常感激.我更喜欢python或其中一种C*语言.
我到目前为止的进展:
完成:
关:
import calendar_util as cu # from date utils; no jokes from .br
#
# year = int(sys.argv1) or datetime.now().year
tj = cu.gregorian_to_jd(year, 1, 1) # this year in julian
ti = cu.jd_to_islamic(tj) # this year in islamic cal
rj = cu.islamic_to_jd(ti[0], 9, 1) # first day of ramadan in julian
#
print cu.jd_to_gregorian(rj) # first day of ramadan in greg
# output: (2011, …Run Code Online (Sandbox Code Playgroud) 我正在编写一个iPad应用程序,我在其中渲染表示形状的XML对象到屏幕上的图形.我试图渲染的对象之一是弧.基本上这些弧为我提供了一个边界矩形以及一个开始和结束角度.
给定属性:
使用这些值,我需要绘制弧(基本上是椭圆的一部分).我不能使用以下内容:
UIBezierPath *arc = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(x, y, width, height)];
[UIColor blackColor] setStroke];
[arc stroke];
Run Code Online (Sandbox Code Playgroud)
因为它绘制了一个完整的椭圆.基本上我需要上面但是它需要考虑开始和结束角度,因此只显示椭圆的一部分.我认为这将涉及绘制三次贝塞尔曲线或二次贝塞尔曲线.问题是我不知道如何用我给出的信息计算起点,终点或控制点.
在NSHipter关于方法调配的文章中,它说"应该总是在dispatch_once中完成Swizzling".为什么这是必要的,因为每个类只发生一次加载?
objective-c ×6
autorelease ×1
build ×1
c++ ×1
calendar ×1
clang ×1
class ×1
compilation ×1
ellipse ×1
ios ×1
mono ×1
python ×1
simd ×1
solution ×1
uibezierpath ×1
unit-testing ×1
vector ×1
xcode ×1
xcode4 ×1