我有一个小项目,当它在一个大的.rs文件中时没有问题.我想让它更容易使用,所以我把它分解成模块,现在项目的结构如下:
??? GameState
? ??? ballstate.rs
? ??? collidable.rs
? ??? gamestate.rs
? ??? mod.rs
? ??? playerstate.rs
??? lib.rs
??? main.rs
Run Code Online (Sandbox Code Playgroud)
在ballstate.rs
,我需要使用rand
箱子.这是文件的缩写版本:
extern crate rand;
pub struct BallState {
dir: Point,
frame: BoundingBox
}
impl BallState {
fn update_dir(&mut self) {
use rand::*;
let mut rng = rand::thread_rng();
self.dir.x = if rng.gen() { Direction::Forwards.as_float() } else { Direction::Backwards.as_float() };
self.dir.y = if rng.gen() { Direction::Forwards.as_float() } else { Direction::Backwards.as_float() };
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我cargo build …
如果我在这个问题中遗漏了任何相关信息,请提前道歉:我不是网络开发人员,所以我不确定究竟需要哪些信息来解决我的问题.
我有一个WKWebView加载一个本地服务的网站,使用大致相似的代码(省略了一些涉及管理器的细节,我认为这与此问题无关).
WKWebViewConfiguration *webViewConfiguration = [[WKWebViewConfiguration alloc] init];
WebViewManager *manager = [[WebViewManager alloc] init];
webViewConfiguration.userContentController = manager;
WKWebView *aWebView = [[WKWebView alloc] initWithFrame:self.view.bounds
configuration:webViewConfiguration];
[aWebView loadRequest:[NSURLRequest requestWithURL:aUrl]];
[aWebView setNavigationDelegate:manager];
Run Code Online (Sandbox Code Playgroud)
该网站的HTML文件存储在App的捆绑包(file://
URL)中,并且需要能够访问存储在捆绑包中相同目录中的各种图像,CSS文件,JS文件和其他资源(有亲戚)我相信HTML中的URL用于此目的.
我现在需要能够从App的共享容器中提供图像(通过containerURLForSecurityApplicationGroupIdentifier:
方法访问NSFileManager
).
但是,我提供的URL不起作用.当我在Safari调试器中查看页面时,我看到一些涉及加载文件的jQuery代码中引发异常.
我已经调查了一些可能的解决方法,但没有一个解决了我的问题:
新loadFileURL:allowingReadAccessToURL:
方法似乎正是我所需要的,但是,将readAccessURL
参数设置到我的共享安全容器中的文件夹打破了网站 - 实际上,它甚至看起来不像HTML文件本身正确加载,因为它们都没有Safari调试程序中的正确名称.作为测试,我将URL设置为包含HTML页面的目录包中的URL,并得到了不同的错误.
另一位开发人员建议我们将每个图像从包外转换为base64编码的字符串,并通过Javascript将其传递到网站,但这对我来说似乎非常低效,所以我希望避免这种结果.
最后,我在其他地方读过,将文件复制到tmp/www
应用程序目录中可以解决iOS 8上类似的问题.所以我想知道是否将所有内容复制到同一个目录(在bundle之外,当然是只读的)可能会解决这个问题.然而,这似乎也非常低效.
如何将包内和共享应用程序容器中的文件加载到我的Web视图中?
我有一个子项目的项目.子项目和主项目都必须使用Cocoapods来集成一个看似不可能在没有Cocoapods的情况下集成的库.所以我为主项目及其子项目设置了Cocoapods.子项目在其生成的工作空间中构建,但编译主项目会产生以下错误:ld:找不到-lPods-Subproject name-Library的库.
我现在唯一的想法是,我应该以某种方式让子项目的Cocoapods回购使用主项目的名称,这样当子项目构建时,它将检查与主要项目的Cocoapods生成相同的库(可能是-lPods-Main Project) Name-Library),它将作为主项目构建过程的一部分创建.
我怎样才能做到这一点?有没有更好的方法来获得我想要的结果?
我正在使用gfx-hal
,这需要我创建需要使用特定于其类型的函数显式销毁的资源.我想将这些类型的实例存储在结构中,并且我还希望将它们清理到拥有结构的生命周期,而不是手动管理它们的生命周期并且可能在GPU上/驱动程序中有对象永远.
但是,函数destroy
族中的所有函数都直接使用类型而不是引用,所以当我尝试从结构中传递它们时,会出现如下错误:
error[E0509]: cannot move out of type `S`, which implements the `Drop` trait
--> src/lib.rs:9:18
|
9 | destroyT(self.member)
| ^^^^^^^^^^^ cannot move out of here
Run Code Online (Sandbox Code Playgroud)
似乎应该有一些解决这个问题的方法,因为我目前处于Drop::drop
函数本身,因此self
已经"消耗"了.我如何获得这些类型的实例出来self
的T
,而不是&T
?
struct T;
struct S {
member: T,
}
impl Drop for S {
fn drop(&mut self) {
destroyT(self.member)
}
}
// elsewhere, in a library
fn destroyT(t: T) {
//...
}
Run Code Online (Sandbox Code Playgroud) 我目前正在使用Game Center Sandbox测试我的Game Center Aware App,其中一个实例在iOS模拟器上运行,另一个在Retina iPad Mini上运行.我有一个需要接收转弯事件的视图控制器,所以我实现了该方法
player:receivedTurnEventForMatch:didBecomeActive:
Run Code Online (Sandbox Code Playgroud)
在我的UIViewController子类采用的GKLocalPlayerListener协议中,然后使用此行注册事件
[[GKLocalPlayer localPlayer] registerListener: self];
Run Code Online (Sandbox Code Playgroud)
在视图控制器的init方法中.然而,尽管游戏中心应用程序说游戏的两个实例已连接,但这种方法很少在iPad上调用,我不认为我曾经见过模拟器实例调用它.但是,转到Game Center App会显示两个实例都已更新,表明两个实例都能够接收事件.可能是什么导致了这个?
我有一个功能,可以在iOS 8.3上获得Helvetica Neue字体(尽管我自8.0以来遇到了同样的问题).
static UIFont *helveticaNeue() {
return [UIFont fontWithName:@"HelveticaNeue"
size:[UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad ? 30 : 24];
}
Run Code Online (Sandbox Code Playgroud)
这个函数实际上运行得很好,但是第一次调用它时,调试器会停止,在此函数之后的callstack看起来像__objc_msgSend_uncached_impcache
- > __cxa_throw
.
从我读过的其他一些问题来看,这个例外是无害的.然而,每次击中时都必须继续击打,真的很烦人.
我已经尝试了各种同义UIFont
函数来尝试获取Helvetica Neue UIFont
对象,或者将其作为类或实例方法,并且所有这些都抛出此异常.
我已经读过,我可以通过将我的All Exceptions Breakpoint更改为Objective-C异常来阻止这种情况,但是我不想这样做,因为这个项目包含大量的C++代码,而且似乎这样会阻止此代码中的异常中断.
有谁知道如何防止抛出异常,或者如何忽略这一个特定的异常?
我想更新Elm类型的记录
type CubeData = {currDirection : Vec3, translation : Vec3, transform : Mat4}
Run Code Online (Sandbox Code Playgroud)
我可以使用以下代码来做.
updateCubeData : CubeData -> CubeData
updateCubeData cubeData = {cubeData | translation <- cubeData.currDirection,
transform <- translate cubeData.translation cubeData.transform}
Run Code Online (Sandbox Code Playgroud)
但是,我现在想要根据字段的当前值不同地更新记录的字段,所以我尝试这样做
updateCubeData : CubeData -> CubeData
updateCubeData cubeData = if abs cubeData.translation.x > 2.0 || abs cubeData.translation.y > 2.0
then {cubeData | translation <- cubeData.currDirection,
transform <- translate cubeData.translation cubeData.transform}
else {cubeData | currDirection <- negate cubeData.currDirection,
translation <- cubeData.currDirection,
transform <- translate cubeData.translation cubeData.transform}
Run Code Online (Sandbox Code Playgroud)
这是一个类型错误,我在下面转载.请注意,类型签名updateCubeData
是文件的第12行. …
在Microsoft的WinObjC UIApplication.mm文件(https://github.com/Microsoft/WinObjC/blob/master/Frameworks/UIKit/UIApplication.mm)中,该init
方法适用于UIApplication
和WOCDisplayMode
.
类的init
方法调用[super init]
,或者最终导致调用的那个方法系列中的任何方法都没有[super init]
.除了NSProxy
对象的初始化之外,我以前从未见过这个.
我在WOCDisplayMode
下面的写作中复制了实现,以供参考.
-(instancetype) init
{
_fixedWidth = 320.0f;
_fixedHeight = 480.0f;
_fixedAspectRatio = 0.0f;
_magnification = 1.0f;
_autoMagnification = TRUE;
_sizeUIWindowToFit = TRUE;
_operationMode = WOCOperationModePhone;
return self;
}
Run Code Online (Sandbox Code Playgroud)
在我看来,这可能会产生一些问题; 例如,如果其中某个超UIApplication
一样UIResponder
,在某些时候推翻init
自己,并建立未来的方法调用依赖于内部状态.
为什么执行者选择不打电话[super init]
?这是否是一个合理的决定?这是正确的吗?
在我的代码中,我有一个结构,用于在HashMap中为用户存储消息messages
.在&mut self
作为争论的函数内部,当我为用户找到消息时,我想修改此字段的值以删除这些消息,以便用户不会两次获得相同的消息.但是,我得到的错误是我无法借用self作为可变因为我在模式匹配开始时将它借用为不可变的.
match self.messages.find(&username) {
Some(message_array) => {
//do some stuff to send the messages
self.messages.remove(&username);
},
Run Code Online (Sandbox Code Playgroud)
我发现这个问题修改了一个字段,同时模式匹配,但是它接受的答案似乎没有解决我的问题 - 我不明白这条线&Tokenizer { state: InATag(*) } => { self.state = Outside }
是如何让自己再次变异的.
objective-c ×3
rust ×3
ios ×2
cocoapods ×1
elm ×1
game-center ×1
rust-cargo ×1
uifont ×1
uikit ×1
winobjc ×1
wkwebview ×1