我不打算在没有IB的情况下编写应用程序,我只是在尝试学习有关编程的更多信息.
如何在启动时获取AppController类的单个实例?(它通常是从笔尖加载的.)你可以清理使用+initialize和-init吗?如果我理解,+initialize在启动时会调用所有类.我如何使用它来创建我的AppController的实例,其中包含构成我的界面的实例变量?
希望有意义,并感谢任何帮助.
我正在使用图形加速度计数据,我正在尝试纠正重力.为此,我得到球面坐标中的加速度矢量,将半径减小1g,然后转换回笛卡尔坐标.每0.03秒在一个计时器上调用此方法:
//poll accleration
ThreeAxisAcceleration current = self.accelerationData;
//math to correct for gravity:
float radius = sqrt(pow(current.x, 2) + pow(current.y, 2) + pow(current.z, 2));
float theta = atan2(current.y, current.x);
float phi = acos(current.z/radius);
//NSLog(@"SPHERICAL--- RADIUS: %.2f -- THETA: %.2f -- PHI: %.2f", radius, theta, phi);
radius = radius - 1.0;
float newX = radius * cos(theta) * sin(phi);
float newY = radius * sin(theta) * sin(phi);
float newZ = radius * cos(phi);
current = (ThreeAxisAcceleration){newX, newY, newZ};
//end math
NSValue *arrayVal …Run Code Online (Sandbox Code Playgroud) 我已经在这方面做了一段时间了,似乎无法理解这种情况 - 部分因为我不完全理解发生了什么(这就是我来到这里的原因).
我正在做一个提升你好世界如下:
#include <boost/thread/thread.hpp>
#include <cstdio>
void helloworld() {
std::printf("HELLO FROM A BOOST THREAD!");
}
int main(int argc, char **argv) {
boost::thread t(&helloworld);
t.join();
}
Run Code Online (Sandbox Code Playgroud)
这是在Windows上.我将Boost目录存储在C:\ Boost中.我运行bootstrap和bjam,现在有一个包含所有.lib文件的stage/lib文件夹.与boost/thread库相关的lib文件是:
libboost_thread-vc100-mt.lib
libboost_thread-vc100-mt-1_46_1.lib
libboost_thread-vc100-mt-gd.lib
libboost_thread-vc100-mt-gd-1_46_1.lib
Run Code Online (Sandbox Code Playgroud)
现在我编译:
g++ -c main.cpp -I/Boost
Run Code Online (Sandbox Code Playgroud)
那行很好,我得到main.o. 然后:
g++ -o test.exe main.o -L/Boost/stage/lib -llibboost_thread-vc100-mt
Run Code Online (Sandbox Code Playgroud)
这就是麻烦发生的地方.首先,如果我没有像我那样输入-l参数,MinGW甚至找不到该文件.意思是,如果我尝试:
-lboost_thread-vc100-mt
Run Code Online (Sandbox Code Playgroud)
而不是我在上面键入它的方式(以及我认为应该如何完成),ld将退出没有这样的文件.无论如何,这是我从那条线得到的输出:
main.o:main.cpp:(.text+0x47): undefined reference to `_imp___ZN5boost6thread4joinEv'
main.o:main.cpp:(.text+0x55): undefined reference to `_imp___ZN5boost6threadD1Ev'
main.o:main.cpp:(.text+0x70): undefined reference to `_imp___ZN5boost6threadD1Ev'
main.o:main.cpp:(.text$_ZN5boost6threadC1IPFvvEEET_NS_10disable_ifINS_14is_convertibleIRS4_NS_6detail13thread_move_tIS4_EEEEPNS0_5dummyEE4typeE[boost::thread::thread<void (*)()>(void (*)(), boost::disable_if<boost::is_convertible<void (*&)(), boost::detail::thread_move_t<void (*)()> >, boost::thread::dummy*>::type)]+0x23): undefined reference to `_imp___ZN5boost6thread12start_threadEv'
collect2: ld returned …Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中使用DarwiinRemote的WiiRemote.framework.
我已经通过下载源代码并要求垃圾收集以及构建10.5来修复了一些问题.但是,当我尝试将其添加到我的项目时,我收到控制台错误:
dyld: Library not loaded: @executable_path/../Frameworks/WiiRemote.framework/Versions/A/WiiRemote
Referenced from: /Users/chasemeadors/Documents/Apps in development/Animation/build/Debug/Animation.app/Contents/MacOS/Animation
Reason: image not found
Run Code Online (Sandbox Code Playgroud)
我在互联网上做了一些搜索,但它们都是特定于框架的,对我来说并没有多大意义.所以我希望这里有人能给出一个简短,甜蜜,可以理解的答案吗?
下载框架的链接:( 注意我的更改,即未进行垃圾收集) http://sourceforge.net/project/downloading.php?group_id=183966&use_mirror=softlayer&filename=WiiRemoteFramework0.5-src.tar.gz&a=58980345
我正在为我的Android应用程序制作一个简单的自定义对话框,只显示一个搜索栏.然而,这项简单任务的复杂性让我疯狂.
我对话框的布局如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp">
<SeekBar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialogVolumeSlider"
android:layout_width="225dp"
android:layout_height="wrap_content"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
该对话框在代码中创建:
Dialog d = new Dialog(this);
d.setContentView(R.layout.custom_dialog);
return d;
Run Code Online (Sandbox Code Playgroud)
我没有一个包装搜索栏的简单盒子,而是从某个地方得到了这个幻影空间:

这是什么问题?我试过修改
d.getWindow().getAttributes().height
Run Code Online (Sandbox Code Playgroud)
但这也会产生其他问题.
谢谢你的帮助!!
编辑:当我为LinearLayout的layout_height分配一个固定的"50dp"时,发生了奇怪的事情:

我知道几种编程语言,包括Objective-C,Java,C#和python,以及C.但是,我需要提高我在C中的效率.
在大多数恰好是高级,基于对象和面向GUI的语言中,我创建了一些标准的面向对象的示例来指导我使用语言/框架.我通常创建一个"汽车"示例,我在其中模拟汽车并允许用户调整速度,观察里程增加.
但是,有些东西告诉我这个例子在unix命令行设置中转移到C是不实际的.在基于unix命令行的C设置中"测试自己"有哪些好的基本想法?
感谢您的任何意见!
编辑:谢谢你的答案.我对汽车示例的基本关注是,我不应该在这种环境中尝试面向对象,而是做一些更适合语言的事情.感谢Duck提出重建命令行实用程序的建议.
在我坐下来开始讨价还价之前,我以为我会来这里看看你们是否有任何提示,或者即使之前已经完成了这样的事情.
我想在python程序中重新创建类似语法的基本shell.换句话说,当人们使用python运行文件时,他们会收到一些提示
>>
Run Code Online (Sandbox Code Playgroud)
对于简单的事情,使用选项解析器来说
opt.parse_args(input.split(" "))
Run Code Online (Sandbox Code Playgroud)
工作得很好,但现在我不仅想要使用'\'字符来转义特殊字符,例如空格,还要将引用的字符串视为单个参数,就像在unix shell中一样.
是否存在可能对此有帮助的任何内容?
谢谢你的任何建议! - 追逐
我最近发现boost ptr_vector对管理堆分配对象的集合很有用.指针集合库非常好,但不幸的是,我被一件事所困扰.
我的代码的另一部分需要显式保存指向ptr_vector中我的一个对象的指针(由于特定原因它不能作为引用).但是,当您访问ptr_vector中的对象时,您会得到一个引用T&(即使您使用了ptr_vector.push_back(T*)
无论如何我可以从boost :: ptr_vector中获得一个普通指针吗?
我遇到了最奇怪的问题,并且一直在调试它.我以为我会在这里发布以获得任何意见.
public static void sieve(int limit) {
for (int i = 2; i < limit; i ++) {
if (mPrimes[i] == true) {
for (int j = i*i; ((j < limit) && (j > 0)); j += i) {
mPrimes[j] = false;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
(假设mPrimes最初都是真的)
这是一个问题:
当我运行此程序的限制为10,100,1000,10000甚至100000时,它会报告计算给定数字下正确的素数数量,与此页面交叉引用:http://primes.utm.edu /howmany.shtml
但是,当我使用1000000(一百万)的参数运行时,我得到的结果与正确的值完全相差7(它报告78491而不是78498).
此外,我在本程序中实现的所有其他计数方法都报告了正确的值.
这是真正的问题:如果我更换
i*i
Run Code Online (Sandbox Code Playgroud)
同
i+i
Run Code Online (Sandbox Code Playgroud)
至于从种子价值直接开始"划掉",而不是从广场开始(这是我教授在他的示例代码中所做的),它起作用.
这让我只能假设当我非常大的时候广场上发生了一些奇怪的事情.
有什么建议?
我有一个非常复杂的迭代,每次循环,我都需要一个"参数"来影响循环中完成的工作.基本上,我一直在做以下事情:
CLOSE_SIDE = 0
FAR_SIDE = 1
....
while (...):
if (side == CLOSE_SIDE):
....
else if (side == FAR_SIDE):
....
....
side = FAR_SIDE if (side == CLOSE_SIDE) else CLOSE_SIDE
Run Code Online (Sandbox Code Playgroud)
我意识到我可以使用布尔值,但我觉得这降低了我正在做的事情的可读性和显而易见性.我希望这两个州被"命名".这项任务虽然紧凑,但感觉非常笨重.做一整个if语句:
if side == CLOSE_SIDE:
side = FAR_SIDE
else if side == FAR_SIDE:
side = CLOSE_SIDE
Run Code Online (Sandbox Code Playgroud)
感觉同样笨重.
解决这个问题的最佳方法是什么?它更像是一种风格问题而不是任何东西.想得到社区的一些意见
我有以下一般代码.
MyClass.prototype.doSomething = function () {
$.ajax({
url: turl,
dataType: 'jsonp',
success: function (_this) { //closure
return function (data) {
_this._angular_scope.$apply(function () {
_this.property = // extract stuff from 'data'
_this.analyzeContent() // do more stuff with it
})
}
}(this)
})
}
Run Code Online (Sandbox Code Playgroud)
基本上,这只是一个普通的AJAX调用.有个...
(1)关闭"this",以便成功函数可以访问我的对象及其状态
(2)在里面,我返回一个对数据执行某些操作的函数,但是......
(3)我想要的一切,成功确实被AngularJS被捕获,所以这个功能解析数据,进一步,在$应用调用它包装的行为.
这有效,但我不禁想知道是否有更好的方法来实现这一目标.由于嵌套函数的数量,我每次看到它时都要考虑我正在做什么,这是正确的.
这没关系,还是有更好的推荐风格?
在python脚本中,我调用bash脚本如下:
subprocess.Popen(["./scan.sh", dir])
Run Code Online (Sandbox Code Playgroud)
在那个剧本里面,有,
find $1 -name "*013*.txt" > found_files.txt
Run Code Online (Sandbox Code Playgroud)
出于某种原因,python中的dir参数被转换为bash脚本中带引号的版本.在python中打印'dir'会产生用户输入的确切路径:
~/Desktop/Files
Run Code Online (Sandbox Code Playgroud)
但是,找不到了
find: '~/Desktop/Files' no such directory
Run Code Online (Sandbox Code Playgroud)
使用〜/ Desktop/Files手动运行scan.sh可以正常工作.为什么要引用它?...?
python ×3
boost ×2
c ×2
c++ ×2
cocoa ×2
coding-style ×2
linker ×2
objective-c ×2
xcode ×2
ajax ×1
algorithm ×1
android ×1
angularjs ×1
bash ×1
dialog ×1
find ×1
frameworks ×1
g++ ×1
java ×1
javascript ×1
layout ×1
macos ×1
math ×1
memory ×1
mingw ×1
parsing ×1
performance ×1
pointers ×1
ptr-vector ×1
readability ×1
shell ×1
string ×1
subprocess ×1
unix ×1
xml ×1